diff --git a/.eslintignore b/.eslintignore index 83bdbbb5f9ec..db9800384427 100644 --- a/.eslintignore +++ b/.eslintignore @@ -8,16 +8,9 @@ **/dist/** lighthouse-extension/app/scripts - **/closure/*/* coverage/** -# Typescript compiled -!lighthouse-cli/index.js -lighthouse-cli/*.js -lighthouse-cli/commands/*.js -lighthouse-cli/types/*.js - # Generated files plots/out* diff --git a/.gitignore b/.gitignore index e7b01b3a6cc8..6e687f14e21f 100644 --- a/.gitignore +++ b/.gitignore @@ -26,16 +26,6 @@ last-run-results.html closure-error.log -!lighthouse-cli/index.js -lighthouse-cli/*.map -lighthouse-cli/*.js - -lighthouse-cli/commands/*.map -lighthouse-cli/commands/*.js - -lighthouse-cli/types/*.js -lighthouse-cli/types/*.map - /chrome-linux/ /chrome-win32/ /chrome.zip diff --git a/.travis.yml b/.travis.yml index 588cbb262166..2c5eda5b2c60 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,6 @@ cache: yarn: true directories: - node_modules - - lighthouse-cli/node_modules - lighthouse-extension/node_modules - lighthouse-viewer/node_modules - /home/travis/.rvm/gems/ @@ -31,7 +30,6 @@ before_script: - yarn build-all script: - yarn bundlesize - - yarn test-cli-formatting - yarn lint - yarn unit - yarn closure @@ -45,7 +43,7 @@ before_cache: - rm -rf ./node_modules/temp-devtoolsfrontend/ - rm -rf ./node_modules/temp-devtoolsprotocol/ after_success: - - ./lighthouse-core/scripts/generate-combined-coverage.sh + - yarn coveralls after_failure: - grep 'No screenshots' perf.json && travis-artifacts upload --path perf-0.trace.json addons: diff --git a/lighthouse-cli/.clang-format b/lighthouse-cli/.clang-format deleted file mode 100644 index 0fd0ae038d39..000000000000 --- a/lighthouse-cli/.clang-format +++ /dev/null @@ -1,6 +0,0 @@ ---- -BasedOnStyle: Google -Language: JavaScript -ColumnLimit: 100 -ReflowComments: false -SpacesBeforeTrailingComments: 1 diff --git a/lighthouse-cli/.eslintignore b/lighthouse-cli/.eslintignore new file mode 100644 index 000000000000..09a8422ef3e3 --- /dev/null +++ b/lighthouse-cli/.eslintignore @@ -0,0 +1 @@ +!.eslintrc.js diff --git a/lighthouse-cli/.eslintrc.js b/lighthouse-cli/.eslintrc.js new file mode 100644 index 000000000000..7a3ff9d51acd --- /dev/null +++ b/lighthouse-cli/.eslintrc.js @@ -0,0 +1,13 @@ +/** + * @license Copyright 2017 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ +'use strict'; + +module.exports = { + extends: '../.eslintrc.js', + parserOptions: { + ecmaVersion: 2017, + }, +}; diff --git a/lighthouse-cli/README.md b/lighthouse-cli/README.md deleted file mode 100644 index ff30062eb204..000000000000 --- a/lighthouse-cli/README.md +++ /dev/null @@ -1,22 +0,0 @@ -## One time setup: - -```sh -yarn -``` - -### Live dev: - -```sh -yarn dev -``` - -### Tests - -```sh -yarn test -``` - -(for test watching) -```sh -yarn test -- --watch -``` diff --git a/lighthouse-cli/bin.ts b/lighthouse-cli/bin.js similarity index 68% rename from lighthouse-cli/bin.ts rename to lighthouse-cli/bin.js index fcc7920ade48..9810e32f6695 100644 --- a/lighthouse-cli/bin.ts +++ b/lighthouse-cli/bin.js @@ -5,23 +5,27 @@ */ 'use strict'; -import {existsSync} from 'fs'; -import * as path from 'path'; +const existsSync = require('fs').existsSync; +const path = require('path'); -import * as Commands from './commands/commands'; -import * as Printer from './printer'; -import {getFlags} from './cli-flags'; -import {runLighthouse} from './run'; +const commands = require('./commands/commands.js'); +const printer = require('./printer.js'); +const getFlags = require('./cli-flags.js').getFlags; +const runLighthouse = require('./run').runLighthouse; const log = require('lighthouse-logger'); +// @ts-ignore const perfOnlyConfig = require('../lighthouse-core/config/perf.json'); +// @ts-ignore const pkg = require('../package.json'); const Sentry = require('../lighthouse-core/lib/sentry'); -// accept noop modules for these, so the real dependency is optional. -import {updateNotifier} from './shim-modules'; -import {askPermission} from './sentry-prompt'; +const updateNotifier = require('update-notifier'); +const askPermission = require('./sentry-prompt').askPermission; +/** + * @return {boolean} + */ function isDev() { return existsSync(path.join(__dirname, '../.git')); } @@ -29,27 +33,29 @@ function isDev() { // Tell user if there's a newer version of LH. updateNotifier({pkg}).notify(); -const cliFlags = getFlags(); +const /** @type {!LH.Flags} */ cliFlags = getFlags(); // Process terminating command if (cliFlags.listAllAudits) { - Commands.ListAudits(); + commands.listAudits(); } // Process terminating command if (cliFlags.listTraceCategories) { - Commands.ListTraceCategories(); + commands.listTraceCategories(); } +/** @type {string} */ const url = cliFlags._[0]; -let config: Object|null = null; +/** @type {!LH.Config|undefined} */ +let config; if (cliFlags.configPath) { // Resolve the config file path relative to where cli was called. cliFlags.configPath = path.resolve(process.cwd(), cliFlags.configPath); - config = require(cliFlags.configPath); + config = /** @type {!LH.Config} */ (require(cliFlags.configPath)); } else if (cliFlags.perf) { - config = perfOnlyConfig; + config = /** @type {!LH.Config} */ (perfOnlyConfig); } // set logging preferences @@ -61,11 +67,13 @@ if (cliFlags.verbose) { } log.setLevel(cliFlags.logLevel); -if (cliFlags.output === Printer.OutputMode[Printer.OutputMode.json] && !cliFlags.outputPath) { +if (cliFlags.output === printer.OutputMode.json && !cliFlags.outputPath) { cliFlags.outputPath = 'stdout'; } - -export async function run() { +/** + * @return {!Promise<(void|!Object)>} + */ +async function run() { if (typeof cliFlags.enableErrorReporting === 'undefined') { cliFlags.enableErrorReporting = await askPermission(); } @@ -85,3 +93,7 @@ export async function run() { return runLighthouse(url, cliFlags, config); } + +module.exports = { + run, +}; diff --git a/lighthouse-cli/cli-flags.ts b/lighthouse-cli/cli-flags.js similarity index 80% rename from lighthouse-cli/cli-flags.ts rename to lighthouse-cli/cli-flags.js index 189a6a8043bf..8e226676685c 100644 --- a/lighthouse-cli/cli-flags.ts +++ b/lighthouse-cli/cli-flags.js @@ -5,21 +5,21 @@ */ 'use strict'; +/* eslint-disable max-len */ + const yargs = require('yargs'); +// @ts-ignore const pkg = require('../package.json'); const Driver = require('../lighthouse-core/gather/driver.js'); +const printer = require('./printer'); -import {GetValidOutputOptions, OutputMode} from './printer'; - -export interface Flags { - port: number, chromeFlags: string, output: any, outputPath: string, saveArtifacts: boolean, - saveAssets: boolean, view: boolean, maxWaitForLoad: number, logLevel: string, - hostname: string, blockedUrlPatterns: string[], enableErrorReporting: boolean -} - -export function getFlags(manualArgv?: string) { +/** + * @param {string=} manualArgv + * @return {!LH.Flags} + */ +function getFlags(manualArgv) { + // @ts-ignore yargs() is incorrectly typed as not returning itself const y = manualArgv ? yargs(manualArgv) : yargs; - return y.help('help') .version(() => pkg.version) .showHelpOnFail(false, 'Specify --help for available options') @@ -47,16 +47,16 @@ export function getFlags(manualArgv?: string) { .group(['verbose', 'quiet'], 'Logging:') .describe({ verbose: 'Displays verbose logging', - quiet: 'Displays no progress, debug logs or errors' + quiet: 'Displays no progress, debug logs or errors', }) .group( - [ - 'save-assets', 'save-artifacts', 'list-all-audits', 'list-trace-categories', - 'additional-trace-categories', 'config-path', 'chrome-flags', 'perf', 'port', - 'hostname', 'max-wait-for-load', 'enable-error-reporting' - ], - 'Configuration:') + [ + 'save-assets', 'save-artifacts', 'list-all-audits', 'list-trace-categories', + 'additional-trace-categories', 'config-path', 'chrome-flags', 'perf', 'port', + 'hostname', 'max-wait-for-load', 'enable-error-reporting', + ], + 'Configuration:') .describe({ 'enable-error-reporting': 'Enables error reporting (prompts once by default, setting this flag will force error reporting to that state).', @@ -90,31 +90,31 @@ export function getFlags(manualArgv?: string) { .describe({ 'output': `Reporter for the results, supports multiple values`, 'output-path': `The file path to output the results. Use 'stdout' to write to stdout. -If using JSON output, default is stdout. -If using HTML output, default is a file in the working directory with a name based on the test URL and date. -If using multiple outputs, --output-path is ignored. -Example: --output-path=./lighthouse-results.html`, - 'view': 'Open HTML report in your browser' + If using JSON output, default is stdout. + If using HTML output, default is a file in the working directory with a name based on the test URL and date. + If using multiple outputs, --output-path is ignored. + Example: --output-path=./lighthouse-results.html`, + 'view': 'Open HTML report in your browser', }) // boolean values .boolean([ 'disable-storage-reset', 'disable-device-emulation', 'disable-cpu-throttling', 'disable-network-throttling', 'save-assets', 'save-artifacts', 'list-all-audits', - 'list-trace-categories', 'perf', 'view', 'verbose', 'quiet', 'help' + 'list-trace-categories', 'perf', 'view', 'verbose', 'quiet', 'help', ]) - .choices('output', GetValidOutputOptions()) + .choices('output', printer.getValidOutputOptions()) // force as an array .array('blocked-url-patterns') // default values .default('chrome-flags', '') .default('disable-cpu-throttling', false) - .default('output', GetValidOutputOptions()[OutputMode.domhtml]) + .default('output', 'domhtml') .default('port', 0) .default('hostname', 'localhost') .default('max-wait-for-load', Driver.MAX_WAIT_FOR_FULLY_LOADED) - .check((argv: {listAllAudits?: boolean, listTraceCategories?: boolean, _: Array}) => { + .check(/** @param {!LH.Flags} argv */ (argv) => { // Make sure lighthouse has been passed a url, or at least one of --list-all-audits // or --list-trace-categories. If not, stop the program and ask for a url if (!argv.listAllAudits && !argv.listTraceCategories && argv._.length === 0) { @@ -128,3 +128,7 @@ Example: --output-path=./lighthouse-results.html`, .wrap(yargs.terminalWidth()) .argv; } + +module.exports = { + getFlags, +}; diff --git a/lighthouse-cli/commands/commands.ts b/lighthouse-cli/commands/commands.js similarity index 75% rename from lighthouse-cli/commands/commands.ts rename to lighthouse-cli/commands/commands.js index 69fe457122c3..c8efe3d78d08 100644 --- a/lighthouse-cli/commands/commands.ts +++ b/lighthouse-cli/commands/commands.js @@ -3,8 +3,12 @@ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ +'use strict'; -import ListAudits from './list-audits'; -import ListTraceCategories from './list-trace-categories'; +const listAudits = require('./list-audits.js'); +const listTraceCategories = require('./list-trace-categories.js'); -export {ListAudits, ListTraceCategories} +module.exports = { + listAudits, + listTraceCategories, +}; diff --git a/lighthouse-cli/commands/list-audits.ts b/lighthouse-cli/commands/list-audits.js similarity index 83% rename from lighthouse-cli/commands/list-audits.ts rename to lighthouse-cli/commands/list-audits.js index 414ac507faf6..ecebade75f0f 100644 --- a/lighthouse-cli/commands/list-audits.ts +++ b/lighthouse-cli/commands/list-audits.js @@ -3,12 +3,14 @@ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ +'use strict'; const lighthouse = require('../../lighthouse-core'); -export default function ListAudits() { - const audits = lighthouse.getAuditList().map((i: string) => i.replace(/\.js$/, '')); - +function listAudits() { + const audits = lighthouse.getAuditList().map((i) => i.replace(/\.js$/, '')); process.stdout.write(JSON.stringify({audits}, null, 2)); process.exit(0); } + +module.exports = listAudits; diff --git a/lighthouse-cli/commands/list-trace-categories.ts b/lighthouse-cli/commands/list-trace-categories.js similarity index 90% rename from lighthouse-cli/commands/list-trace-categories.ts rename to lighthouse-cli/commands/list-trace-categories.js index 5942861ace63..bc745cb92062 100644 --- a/lighthouse-cli/commands/list-trace-categories.ts +++ b/lighthouse-cli/commands/list-trace-categories.js @@ -3,12 +3,14 @@ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ +'use strict'; const lighthouse = require('../../lighthouse-core'); -export default function listTraceCategories() { +function listTraceCategories() { const traceCategories = lighthouse.traceCategories; - process.stdout.write(JSON.stringify({traceCategories})); process.exit(0); } + +module.exports = listTraceCategories; diff --git a/lighthouse-cli/compiled-check.js b/lighthouse-cli/compiled-check.js deleted file mode 100644 index ab17df8995a6..000000000000 --- a/lighthouse-cli/compiled-check.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict' - -const fs = require('fs'); -const path = require('path'); - -module.exports = function(filename) { - if (!fs.existsSync(path.join(__dirname, filename))) { - console.log('Oops! Looks like the CLI needs to be compiled. Please run:'); - console.log(' yarn install-cli; yarn build-cli;'); - console.log('More at: https://github.com/GoogleChrome/lighthouse#develop'); - process.exit(1); - } -} diff --git a/lighthouse-cli/index.js b/lighthouse-cli/index.js index 9b64875dd82f..2f82152ed87c 100755 --- a/lighthouse-cli/index.js +++ b/lighthouse-cli/index.js @@ -1,9 +1,9 @@ #!/usr/bin/env node - -'use strict' - -require('./compiled-check.js')('bin.js'); -require('./compiled-check.js')('printer.js'); -require('./compiled-check.js')('shim-modules.js'); +/** + * @license Copyright 2017 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ +'use strict'; require('./bin.js').run(); diff --git a/lighthouse-cli/package.json b/lighthouse-cli/package.json deleted file mode 100644 index 9eed1c7328a6..000000000000 --- a/lighthouse-cli/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "lighthouse-cli", - "private": true, - "main": "index.js", - "scripts": { - "build": "tsc", - "dev": "tsc -w", - "test": "mocha --reporter dot test/**/*-test.js --timeout 15000", - "coverage": "nyc yarn test && nyc report --reporter=text-lcov > lcov.info", - "test-formatting": "./test/check-formatting.sh", - "format": "clang-format -i -style=file *.ts **/*.ts" - }, - "devDependencies": { - "clang-format": "^1.0.50", - "mocha": "^3.2.0", - "nyc": "^11.0.2", - "typescript": "2.2.1" - }, - "dependencies": { - "@types/node": "6.0.66", - "lighthouse-logger": "^1.0.0" - } -} diff --git a/lighthouse-cli/printer.ts b/lighthouse-cli/printer.js similarity index 62% rename from lighthouse-cli/printer.ts rename to lighthouse-cli/printer.js index d823358bb07b..02ce0f457a5b 100644 --- a/lighthouse-cli/printer.ts +++ b/lighthouse-cli/printer.js @@ -5,61 +5,59 @@ */ 'use strict'; +const fs = require('fs'); +const ReportGenerator = require('../lighthouse-core/report/v2/report-generator'); +const log = require('lighthouse-logger'); + /** * An enumeration of acceptable output modes: * 'json': JSON formatted results * 'html': An HTML report * 'domhtml': Alias for 'html' report */ -enum OutputMode { - json, - html, - domhtml -} -; -type Mode = 'json'|'html'|'domhtml'; - -import {Results} from './types/types'; - -const fs = require('fs'); -const ReportGeneratorV2 = require('../lighthouse-core/report/v2/report-generator'); -const log = require('lighthouse-logger'); - +const OutputMode = { + json: 'json', + html: 'html', + domhtml: 'domhtml', +}; /** * Verify output path to use, either stdout or a file path. + * @param {string=} path + * @return {string} */ -function checkOutputPath(path: string): string { +function checkOutputPath(path) { if (!path) { log.warn('Printer', 'No output path set; using stdout'); return 'stdout'; } - return path; } /** * Creates the results output in a format based on the `mode`. + * @param {!LH.Results} results + * @param {string} outputMode + * @return {string} */ -function createOutput(results: Results, outputMode: OutputMode): string { +function createOutput(results, outputMode) { // HTML report. if (outputMode === OutputMode.domhtml || outputMode === OutputMode.html) { - return new ReportGeneratorV2().generateReportHtml(results); + return new ReportGenerator().generateReportHtml(results); } - // JSON report. if (outputMode === OutputMode.json) { return JSON.stringify(results, null, 2); } - throw new Error('Invalid output mode: ' + outputMode); } -/* istanbul ignore next */ /** * Writes the output to stdout. + * @param {string} output + * @return {!Promise} */ -function writeToStdout(output: string): Promise<{}> { +function writeToStdout(output) { return new Promise(resolve => { // small delay to avoid race with debug() logs setTimeout(_ => { @@ -71,11 +69,15 @@ function writeToStdout(output: string): Promise<{}> { /** * Writes the output to a file. + * @param {string} filePath + * @param {string} output + * @param {string} outputMode + * @return {!Promise} */ -function writeFile(filePath: string, output: string, outputMode: OutputMode): Promise<{}> { +function writeFile(filePath, output, outputMode) { return new Promise((resolve, reject) => { // TODO: make this mkdir to the filePath. - fs.writeFile(filePath, output, 'utf8', (err: Error) => { + fs.writeFile(filePath, output, (err) => { if (err) { return reject(err); } @@ -87,39 +89,39 @@ function writeFile(filePath: string, output: string, outputMode: OutputMode): Pr /** * Writes the results. + * @param {!LH.Results} results + * @param {string} mode + * @param {string} path + * @return {!Promise} */ -function write(results: Results, mode: Mode, path: string): Promise { +function write(results, mode, path) { return new Promise((resolve, reject) => { const outputPath = checkOutputPath(path); + const output = createOutput(results, mode); - const output = createOutput(results, (OutputMode)[mode]); - - // Testing stdout is out of scope, and doesn't really achieve much besides testing Node, - // so we will skip this chunk of the code. - /* istanbul ignore if */ if (outputPath === 'stdout') { return writeToStdout(output).then(_ => resolve(results)); } - - return writeFile(outputPath, output, (OutputMode)[mode]) - .then(_ => { - resolve(results); - }) - .catch(err => reject(err)); + return writeFile(outputPath, output, mode) + .then(_ => { + resolve(results); + }) + .catch(err => reject(err)); }); } -function GetValidOutputOptions(): Array { - return [ - OutputMode[OutputMode.json] as Mode, OutputMode[OutputMode.html] as Mode, - OutputMode[OutputMode.domhtml] as Mode - ]; +/** + * Returns a list of valid output options. + * @return {!Array} + */ +function getValidOutputOptions() { + return Object.keys(OutputMode); } -export { +module.exports = { checkOutputPath, createOutput, write, OutputMode, - GetValidOutputOptions, -} + getValidOutputOptions, +}; diff --git a/lighthouse-cli/run.ts b/lighthouse-cli/run.js similarity index 58% rename from lighthouse-cli/run.ts rename to lighthouse-cli/run.js index f55c33c43f5f..784d8d765242 100644 --- a/lighthouse-cli/run.ts +++ b/lighthouse-cli/run.js @@ -5,31 +5,30 @@ */ 'use strict'; -import * as path from 'path'; +/* eslint-disable no-console */ -import * as Printer from './printer'; -import {Results} from './types/types'; -import {Flags} from './cli-flags'; -import {launch, LaunchedChrome} from 'chrome-launcher'; +const path = require('path'); + +const printer = require('./printer'); +const ChromeLauncher = require('chrome-launcher'); const yargsParser = require('yargs-parser'); -const lighthouse = require('../lighthouse-core'); +const lighthouse = require('../lighthouse-core/index.js'); const log = require('lighthouse-logger'); const getFilenamePrefix = require('../lighthouse-core/lib/file-namer.js').getFilenamePrefix; const assetSaver = require('../lighthouse-core/lib/asset-saver.js'); -// accept noop modules for these, so the real dependency is optional. -import {opn} from './shim-modules'; +const opn = require('opn'); const _RUNTIME_ERROR_CODE = 1; const _PROTOCOL_TIMEOUT_EXIT_CODE = 67; -interface LighthouseError extends Error { - code?: string -} - -// exported for testing -export function parseChromeFlags(flags: string = '') { +/** + * exported for testing + * @param {string} flags + * @return {!Array} + */ +function parseChromeFlags(flags = '') { const parsed = yargsParser( flags, {configuration: {'camel-case-expansion': false, 'boolean-negation': false}}); @@ -47,12 +46,14 @@ export function parseChromeFlags(flags: string = '') { /** * Attempts to connect to an instance of Chrome with an open remote-debugging * port. If none is found, launches a debuggable instance. + * @param {!LH.Flags} flags + * @return {!Promise} */ -async function getDebuggableChrome(flags: Flags) { - return await launch({ +async function getDebuggableChrome(flags) { + return ChromeLauncher.launch({ port: flags.port, chromeFlags: parseChromeFlags(flags.chromeFlags), - logLevel: flags.logLevel + logLevel: flags.logLevel, }); } @@ -61,7 +62,10 @@ function showConnectionError() { process.exit(_RUNTIME_ERROR_CODE); } -function showRuntimeError(err: LighthouseError) { +/** + * @param {!LH.LighthouseError} err + */ +function showRuntimeError(err) { console.error('Runtime error encountered:', err); if (err.stack) { console.error(err.stack); @@ -79,7 +83,10 @@ function showPageLoadError() { process.exit(_RUNTIME_ERROR_CODE); } -function handleError(err: LighthouseError) { +/** + * @param {!LH.LighthouseError} err + */ +function handleError(err) { if (err.code === 'PAGE_LOAD_ERROR') { showPageLoadError(); } else if (err.code === 'ECONNREFUSED') { @@ -91,8 +98,13 @@ function handleError(err: LighthouseError) { } } -export function saveResults(results: Results, artifacts: Object, flags: Flags) { - let promise = Promise.resolve(results); +/** + * @param {!LH.Results} results + * @param {!Object} artifacts + * @param {!LH.Flags} flags + * @return {!Promise} + */ +async function saveResults(results, artifacts, flags) { const cwd = process.cwd(); // Use the output path as the prefix for all generated files. // If no output path is set, generate a file prefix using the URL and date. @@ -106,40 +118,38 @@ export function saveResults(results: Results, artifacts: Object, flags: Flags) { } if (flags.saveAssets) { - promise = promise.then(_ => assetSaver.saveAssets(artifacts, results.audits, resolvedPath)); + await assetSaver.saveAssets(artifacts, results.audits, resolvedPath); } - const typeToExtension = (type: string) => type === 'domhtml' ? 'html' : type; - return promise.then(_ => { - if (Array.isArray(flags.output)) { - return flags.output.reduce((innerPromise, outputType) => { - const outputPath = `${resolvedPath}.report.${typeToExtension(outputType)}`; - return innerPromise.then((_: Results) => Printer.write(results, outputType, outputPath)); - }, Promise.resolve(results)); - } else { - const outputPath = - flags.outputPath || `${resolvedPath}.report.${typeToExtension(flags.output)}`; - return Printer.write(results, flags.output, outputPath).then(results => { - if (flags.output === Printer.OutputMode[Printer.OutputMode.html] || - flags.output === Printer.OutputMode[Printer.OutputMode.domhtml]) { - if (flags.view) { - opn(outputPath, {wait: false}); - } else { - log.log( - 'CLI', - 'Protip: Run lighthouse with `--view` to immediately open the HTML report in your browser'); - } - } - - return results; - }); + if (Array.isArray(flags.output)) { + for (const outputType of flags.output) { + const extension = outputType === 'domhtml' ? 'html' : outputType; + const outputPath = `${resolvedPath}.report.${extension}`; + await printer.write(results, outputType, outputPath); } - }); + } else { + const extension = flags.output === 'domhtml' ? 'html' : flags.output; + const outputPath = flags.outputPath || `${resolvedPath}.report.${extension}`; + await printer.write(results, flags.output, outputPath); + if (flags.output === printer.OutputMode.html || flags.output === printer.OutputMode.domhtml) { + if (flags.view) { + opn(outputPath, {wait: false}); + } else { + // eslint-disable-next-line max-len + log.log('CLI', 'Protip: Run lighthouse with `--view` to immediately open the HTML report in your browser'); + } + } + } } -export async function runLighthouse( - url: string, flags: Flags, config: Object|null): Promise<{}|void> { - let launchedChrome: LaunchedChrome|undefined; +/** + * @param {string} url + * @param {!LH.Flags} flags + * @param {!LH.Config|undefined} config + * @return {!Promise} + */ +async function runLighthouse(url, flags, config) { + let launchedChrome; try { launchedChrome = await getDebuggableChrome(flags); @@ -149,15 +159,22 @@ export async function runLighthouse( const artifacts = results.artifacts; delete results.artifacts; - await saveResults(results, artifacts!, flags); + await saveResults(results, artifacts, flags); await launchedChrome.kill(); return results; } catch (err) { - if (typeof launchedChrome !== 'undefined') { - await launchedChrome!.kill(); + if (launchedChrome !== undefined) { + // TODO: needs cast: https://github.com/Microsoft/TypeScript/issues/19193 + await /** @type {!LH.LaunchedChrome} */ (launchedChrome).kill(); } - return handleError(err); + handleError(err); } } + +module.exports = { + parseChromeFlags, + saveResults, + runLighthouse, +}; diff --git a/lighthouse-cli/sentry-prompt.ts b/lighthouse-cli/sentry-prompt.js similarity index 76% rename from lighthouse-cli/sentry-prompt.ts rename to lighthouse-cli/sentry-prompt.js index 43fed9c2d956..467752ffd21c 100644 --- a/lighthouse-cli/sentry-prompt.ts +++ b/lighthouse-cli/sentry-prompt.js @@ -3,17 +3,19 @@ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -import {Configstore, inquirer} from './shim-modules'; +'use strict'; + +const Configstore = require('configstore'); +const inquirer = require('inquirer'); const log = require('lighthouse-logger'); const MAXIMUM_WAIT_TIME = 20 * 1000; -// clang-format off -const MESSAGE = - `${log.reset}We're constantly trying to improve Lighthouse and its reliability.\n ` + + +// eslint-disable-next-line max-len +const MESSAGE = `${log.reset}We're constantly trying to improve Lighthouse and its reliability.\n ` + `May we anonymously report runtime exceptions to improve the tool over time?\n ` + `${log.reset}Learn more: https://github.com/GoogleChrome/lighthouse/blob/master/docs/error-reporting.md`; -// clang-format on async function prompt() { if (!process.stdout.isTTY || process.env.CI) { @@ -21,7 +23,8 @@ async function prompt() { return false; } - let timeout: NodeJS.Timer; + /** @type {NodeJS.Timer|undefined} */ + let timeout; const prompt = inquirer.prompt([ { @@ -32,8 +35,9 @@ async function prompt() { }, ]); - const timeoutPromise = new Promise((resolve: (a: boolean) => {}) => { + const timeoutPromise = new Promise((resolve) => { timeout = setTimeout(() => { + // @ts-ignore Promise returned by prompt is decorated with `ui` prompt.ui.close(); process.stdout.write('\n'); log.warn('CLI', 'No response to error logging preference, errors will not be reported.'); @@ -42,15 +46,15 @@ async function prompt() { }); return Promise.race([ - prompt.then((result: {isErrorReportingEnabled: boolean}) => { - clearTimeout(timeout); + prompt.then(result => { + clearTimeout(/** @type {NodeJS.Timer} */ (timeout)); return result.isErrorReportingEnabled; }), timeoutPromise, ]); } -export async function askPermission() { +async function askPermission() { const configstore = new Configstore('lighthouse'); let isErrorReportingEnabled = configstore.get('isErrorReportingEnabled'); if (typeof isErrorReportingEnabled === 'boolean') { @@ -61,3 +65,7 @@ export async function askPermission() { configstore.set('isErrorReportingEnabled', isErrorReportingEnabled); return isErrorReportingEnabled; } + +module.exports = { + askPermission, +}; diff --git a/lighthouse-cli/shim-modules.ts b/lighthouse-cli/shim-modules.ts deleted file mode 100644 index a0f32c9764a1..000000000000 --- a/lighthouse-cli/shim-modules.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license Copyright 2017 Google Inc. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - */ -'use strict'; - -/** @fileoverview Some users may be unable to install the full dependency tree, - * especially for the CLI. `opn` and `update-notifier` in particular have some - * uncommon transitive dependencies, so these shims will let the modules no-op - * if the real dependency is not installed. - */ - -let opn; -try { - opn = require('opn'); -} catch (e) { - opn = function shimOpn() { - console.error('module `opn` not installed. Not opening browser.'); - }; -} - -let updateNotifier; -try { - updateNotifier = require('update-notifier'); -} catch (e) { - updateNotifier = function shimUpdateNotifier() { - console.error('module `update-notifier` not installed. Not checking for new version.'); - return {notify: () => false}; - }; -} - -let inquirer; -try { - inquirer = require('inquirer'); -} catch (e) { - inquirer = { - prompt() { - console.error('module `inquirer` not installed. Not reporting errors.'); - return Promise.resolve({isErrorReportingEnabled: false}); - } - } -} - -let Configstore; -try { - Configstore = require('configstore'); -} catch (e) { - Configstore = function Configstore() { - console.error('module `configstore` not installed. Not persisting user choices.'); - this.get = () => false; - this.set = () => undefined; - } -} - -export {opn, updateNotifier, inquirer, Configstore}; diff --git a/lighthouse-cli/test/check-formatting.sh b/lighthouse-cli/test/check-formatting.sh deleted file mode 100755 index 75aee4962d09..000000000000 --- a/lighthouse-cli/test/check-formatting.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -check_formatting () -{ - diff -u <(cat $1) <(./node_modules/.bin/clang-format -style=file $1) &>/dev/null - if [ $? -eq 1 ] - then - echo "Error: formatting is required for *.ts files:" - echo " cd lighthouse-cli" - echo " yarn format" - exit 1 - fi -} - -check_formatting "*.ts" -check_formatting "**/*.ts" diff --git a/lighthouse-cli/test/cli/bin-test.js b/lighthouse-cli/test/cli/bin-test.js index 0626193b3c54..00b83a45f861 100644 --- a/lighthouse-cli/test/cli/bin-test.js +++ b/lighthouse-cli/test/cli/bin-test.js @@ -8,7 +8,7 @@ /* eslint-env mocha */ const assert = require('assert'); -require('../../bin'); +require('../../bin.js'); describe('CLI bin', function() { it('all options should have descriptions', () => { diff --git a/lighthouse-cli/test/cli/printer-test.js b/lighthouse-cli/test/cli/printer-test.js index f14c13a2f29b..ddd08a3ad0e0 100644 --- a/lighthouse-cli/test/cli/printer-test.js +++ b/lighthouse-cli/test/cli/printer-test.js @@ -5,8 +5,6 @@ */ 'use strict'; -require('../../compiled-check.js')('printer.js'); - /* eslint-env mocha */ const Printer = require('../../printer.js'); const assert = require('assert'); @@ -64,4 +62,13 @@ describe('Printer', () => { assert.ok(outputCheck.test(htmlOutput)); }); + + it('returns output modes', () => { + const modes = Printer.getValidOutputOptions(); + assert.ok(Array.isArray(modes)); + assert.ok(modes.length > 1); + modes.forEach(mode => { + assert.strictEqual(typeof mode, 'string'); + }); + }); }); diff --git a/lighthouse-cli/tsconfig.json b/lighthouse-cli/tsconfig.json index 3df62d2b6176..10effd8e3a40 100644 --- a/lighthouse-cli/tsconfig.json +++ b/lighthouse-cli/tsconfig.json @@ -1,19 +1,21 @@ { - "compilerOptions": { - "module": "commonjs", - "target": "es6", - "noImplicitAny": true, - "inlineSourceMap": true, - "noEmitOnError": false, - "strictNullChecks": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true - }, - "exclude": [ - "node_modules" - ], - "include": [ - "*.ts" + "compilerOptions": { + "noEmit": true, + "module": "commonjs", + "target": "ES2017", + "allowJs": true, + "checkJs": true, + "strict": true, + "typeRoots": [ + "@types", + "../typings" ] + }, + "include": [ + "*.js", + "../typings/externs.d.ts" + ], + "exclude": [ + "**/lighthouse-core/*" + ] } diff --git a/lighthouse-cli/types/types.ts b/lighthouse-cli/types/types.ts deleted file mode 100644 index f1bb8c9111cc..000000000000 --- a/lighthouse-cli/types/types.ts +++ /dev/null @@ -1,46 +0,0 @@ -interface AuditResult { - rawValue: boolean|number; - displayValue?: string; - debugString?: string; - score?: boolean|number; - optimalValue: number|string; - extendedInfo?: {value: string;}; -} - -interface AuditResults { - [metric: string]: AuditResult -} - -interface AuditFullResult { - rawValue: boolean|number; - displayValue: string; - debugString?: string; - score: boolean|number; - scoringMode: string; - error?: boolean; - description: string; - name: string; - helpText?: string; - extendedInfo?: {value: string}; -} - -interface AuditFullResults { - [metric: string]: AuditFullResult -} - -interface Results { - url: string; - audits: AuditFullResults; - lighthouseVersion: string; - artifacts?: Object; - initialUrl: string; - generatedTime: string; -} - -export { - Results, - AuditResult, - AuditResults, - AuditFullResult, - AuditFullResults, -} diff --git a/lighthouse-cli/yarn.lock b/lighthouse-cli/yarn.lock deleted file mode 100644 index ad8feff69b43..000000000000 --- a/lighthouse-cli/yarn.lock +++ /dev/null @@ -1,1356 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@types/node@6.0.66": - version "6.0.66" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.66.tgz#5680b74a6135d33d4c00447e7c3dc691a4601625" - -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" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - dependencies: - default-require-extensions "^1.0.0" - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -async@^1.4.0, async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -babel-generator@^6.18.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.25.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-runtime@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-template@^6.16.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.25.0" - babel-types "^6.25.0" - babylon "^6.17.2" - lodash "^4.2.0" - -babel-traverse@^6.18.0, babel-traverse@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.25.0" - babylon "^6.17.2" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-types@^6.18.0, babel-types@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babylon@^6.13.0, babylon@^6.17.2: - version "6.17.4" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" - -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - -brace-expansion@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" - dependencies: - balanced-match "^0.4.1" - 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" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -caching-transform@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" - dependencies: - md5-hex "^1.2.0" - mkdirp "^0.5.1" - write-file-atomic "^1.1.4" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -clang-format@^1.0.50: - version "1.0.50" - resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.0.50.tgz#b40926fd5c8573f7d37ed074a32da9a370dbdbcf" - dependencies: - async "^1.5.2" - glob "^7.0.0" - resolve "^1.1.6" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - 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" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -convert-source-map@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" - -cross-spawn@^4, cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -debug-log@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" - -debug@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" - dependencies: - ms "0.7.2" - -debug@^2.2.0, debug@^2.6.3, debug@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - -decamelize@^1.0.0, decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - dependencies: - strip-bom "^2.0.0" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -diff@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - dependencies: - is-arrayish "^0.2.1" - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -execa@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" - dependencies: - cross-spawn "^4.0.0" - get-stream "^2.2.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - 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" - dependencies: - fill-range "^2.1.0" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -foreground-child@^1.5.3, foreground-child@^1.5.6: - version "1.5.6" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" - dependencies: - cross-spawn "^4" - signal-exit "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.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" - 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" - dependencies: - is-glob "^2.0.0" - -glob@7.1.1, glob@^7.0.0, glob@^7.0.5, glob@^7.0.6: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^9.0.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" - -handlebars@^4.0.3: - version "4.0.10" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -hosted-git-info@^2.1.4: - version "2.4.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -invariant@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - -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" - dependencies: - builtin-modules "^1.0.0" - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -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" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -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" - dependencies: - is-extglob "^1.0.0" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - 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" - dependencies: - kind-of "^3.0.2" - -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" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -istanbul-lib-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" - -istanbul-lib-hook@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" - dependencies: - append-transform "^0.4.0" - -istanbul-lib-instrument@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.2.tgz#6014b03d3470fb77638d5802508c255c06312e56" - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.13.0" - istanbul-lib-coverage "^1.1.1" - semver "^5.3.0" - -istanbul-lib-report@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" - dependencies: - istanbul-lib-coverage "^1.1.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-lib-source-maps@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" - dependencies: - debug "^2.6.3" - istanbul-lib-coverage "^1.1.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - -istanbul-reports@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e" - dependencies: - handlebars "^4.0.3" - -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -json3@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - 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" - dependencies: - is-buffer "^1.1.5" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -lighthouse-logger@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lighthouse-logger/-/lighthouse-logger-1.0.0.tgz#c6abdfbbbf0b4a541ab33864802cbad8944bcc8c" - dependencies: - debug "^2.6.8" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash@^4.2.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -lru-cache@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -md5-hex@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" - dependencies: - md5-o-matic "^0.1.1" - -md5-o-matic@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -merge-source-map@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" - dependencies: - source-map "^0.5.6" - -micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - 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" - -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - -minimatch@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8, minimist@~0.0.1: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -mocha@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.3.0.tgz#d29b7428d3f52c82e2e65df1ecb7064e1aabbfb5" - dependencies: - browser-stdout "1.3.0" - commander "2.9.0" - debug "2.6.0" - diff "3.2.0" - escape-string-regexp "1.0.5" - glob "7.1.1" - growl "1.9.2" - json3 "3.3.2" - lodash.create "3.1.1" - mkdirp "0.5.1" - supports-color "3.1.2" - -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -normalize-package-data@^2.3.2: - version "2.3.8" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -nyc@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.0.2.tgz#9e592a697186028253b668516c38f079c39c08f3" - dependencies: - archy "^1.0.0" - arrify "^1.0.1" - caching-transform "^1.0.0" - convert-source-map "^1.3.0" - debug-log "^1.0.1" - default-require-extensions "^1.0.0" - find-cache-dir "^0.1.1" - find-up "^2.1.0" - foreground-child "^1.5.3" - glob "^7.0.6" - istanbul-lib-coverage "^1.1.1" - istanbul-lib-hook "^1.0.7" - istanbul-lib-instrument "^1.7.2" - istanbul-lib-report "^1.1.1" - istanbul-lib-source-maps "^1.2.1" - istanbul-reports "^1.1.1" - md5-hex "^1.2.0" - merge-source-map "^1.0.2" - micromatch "^2.3.11" - mkdirp "^0.5.0" - resolve-from "^2.0.0" - rimraf "^2.5.4" - signal-exit "^3.0.1" - spawn-wrap "^1.3.6" - test-exclude "^4.1.1" - yargs "^8.0.1" - yargs-parser "^5.0.0" - -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4" - dependencies: - execa "^0.5.0" - lcid "^1.0.0" - mem "^1.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - 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" - dependencies: - error-ex "^1.2.0" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - dependencies: - find-up "^1.0.0" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -regenerator-runtime@^0.10.0: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - -regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" - dependencies: - is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - -remove-trailing-separator@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.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" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -resolve-from@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" - -resolve@^1.1.6: - version "1.3.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" - dependencies: - path-parse "^1.0.5" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@^2.3.3, rimraf@^2.5.4, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" - dependencies: - glob "^7.0.5" - -"semver@2 || 3 || 4 || 5", semver@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - -source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -spawn-wrap@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.6.tgz#ccec4a949d8ce7e2b1a35cf4671d683d2e76a1d1" - dependencies: - foreground-child "^1.5.6" - mkdirp "^0.5.0" - os-homedir "^1.0.1" - rimraf "^2.3.3" - signal-exit "^3.0.2" - which "^1.2.4" - -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^3.0.0" - -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" - dependencies: - ansi-regex "^2.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -supports-color@3.1.2, supports-color@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" - dependencies: - has-flag "^1.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -test-exclude@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" - dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - -to-fast-properties@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -typescript@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9" - -uglify-js@^2.6: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - 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" - -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" - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@^1.2.4, which@^1.2.9: - version "1.2.14" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" - dependencies: - isexe "^2.0.0" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -write-file-atomic@^1.1.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - 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" - dependencies: - camelcase "^4.1.0" - -yargs@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" diff --git a/lighthouse-core/audits/audit.js b/lighthouse-core/audits/audit.js index c3de174d840f..b9ea4e05f72e 100644 --- a/lighthouse-core/audits/audit.js +++ b/lighthouse-core/audits/audit.js @@ -166,20 +166,21 @@ class Audit { module.exports = Audit; -/** @typedef { - * !Array<{ - * key: string, - * itemType: string, - * text: string, - * }>} +/** + * @typedef {Object} Audit.Heading + * @property {string} key + * @property {string} itemType + * @property {string} text + */ + +/** + * @typedef {Array} Audit.Headings */ -Audit.Headings; // eslint-disable-line no-unused-expressions - -/** @typedef {{ - * results: !Array>, - * headings: !Audit.Headings, - * passes: boolean, - * debugString: (string|undefined) - * }} + +/** + * @typedef {Object} Audit.HeadingsResult + * @property {number} results + * @property {Audit.Headings} headings + * @property {boolean} passes + * @property {string=} debugString */ -Audit.HeadingsResult; // eslint-disable-line no-unused-expressions diff --git a/lighthouse-core/gather/connections/connection.js b/lighthouse-core/gather/connections/connection.js index 39bfb798215e..1958369d698b 100644 --- a/lighthouse-core/gather/connections/connection.js +++ b/lighthouse-core/gather/connections/connection.js @@ -50,7 +50,7 @@ class Connection { /** * Bind listeners for connection events * @param {!string} eventName - * @param {function(...)} cb + * @param {function(...args)} cb */ on(eventName, cb) { if (eventName !== 'notification') { diff --git a/lighthouse-core/gather/driver.js b/lighthouse-core/gather/driver.js index 76431926fdcf..a48458f41c2e 100644 --- a/lighthouse-core/gather/driver.js +++ b/lighthouse-core/gather/driver.js @@ -107,7 +107,7 @@ class Driver { /** * Bind listeners for protocol events * @param {!string} eventName - * @param {function(...)} cb + * @param {function(...args)} cb */ on(eventName, cb) { if (this._eventEmitter === null) { @@ -123,7 +123,7 @@ class Driver { * Bind a one-time listener for protocol events. Listener is removed once it * has been called. * @param {!string} eventName - * @param {function(...)} cb + * @param {function(...args)} cb */ once(eventName, cb) { if (this._eventEmitter === null) { @@ -137,7 +137,7 @@ class Driver { /** * Unbind event listeners * @param {!string} eventName - * @param {function(...)} cb + * @param {function(...args)} cb */ off(eventName, cb) { if (this._eventEmitter === null) { diff --git a/lighthouse-core/gather/gather-runner.js b/lighthouse-core/gather/gather-runner.js index 87580a7d2280..fa3ebb99b425 100644 --- a/lighthouse-core/gather/gather-runner.js +++ b/lighthouse-core/gather/gather-runner.js @@ -11,9 +11,8 @@ const URL = require('../lib/url-shim'); const NetworkRecorder = require('../lib/network-recorder.js'); /** - * @typedef {!Object>>} + * @typedef {!Object>>} GathererResults */ -let GathererResults; // eslint-disable-line no-unused-vars /** * Class that drives browser to load the page and runs gatherer lifecycle hooks. diff --git a/lighthouse-core/gather/gatherers/gatherer.js b/lighthouse-core/gather/gatherers/gatherer.js index f1166970b0f7..40871a031609 100644 --- a/lighthouse-core/gather/gatherers/gatherer.js +++ b/lighthouse-core/gather/gatherers/gatherer.js @@ -44,7 +44,7 @@ class Gatherer { * executed, and — if generated in this pass — the trace is ended. The trace * and record of network activity are provided in `loadData`. * @param {!Object} options - * @param {networkRecords: !Array, trace: {traceEvents: !Array}} loadData + * @param {{networkRecords: !Array, trace: {traceEvents: !Array}}} loadData * @return {*|!Promise<*>} */ afterPass(options, loadData) { } diff --git a/lighthouse-core/index.js b/lighthouse-core/index.js index 0f2b6607fabb..ddf5442f4694 100644 --- a/lighthouse-core/index.js +++ b/lighthouse-core/index.js @@ -10,7 +10,7 @@ const log = require('lighthouse-logger'); const ChromeProtocol = require('./gather/connections/cri.js'); const Config = require('./config/config'); -/** +/* * The relationship between these root modules: * * index.js - the require('lighthouse') hook for Node modules (including the CLI) @@ -25,7 +25,13 @@ const Config = require('./config/config'); * */ -module.exports = function(url, flags = {}, configJSON) { +/** + * @param {string} url + * @param {!LH.Flags} flags + * @param {!LH.Config|undefined} configJSON + * @return {!Promise} + */ +function lighthouse(url, flags = {}, configJSON) { const startTime = Date.now(); return Promise.resolve().then(_ => { // set logging preferences, assume quiet @@ -48,9 +54,11 @@ module.exports = function(url, flags = {}, configJSON) { return lighthouseResults; }); }); -}; +} + +lighthouse.getAuditList = Runner.getAuditList; +lighthouse.traceCategories = require('./gather/driver').traceCategories; +lighthouse.Audit = require('./audits/audit'); +lighthouse.Gatherer = require('./gather/gatherers/gatherer'); -module.exports.getAuditList = Runner.getAuditList; -module.exports.traceCategories = require('./gather/driver').traceCategories; -module.exports.Audit = require('./audits/audit'); -module.exports.Gatherer = require('./gather/gatherers/gatherer'); +module.exports = lighthouse; diff --git a/lighthouse-core/report/v2/report-generator.js b/lighthouse-core/report/v2/report-generator.js index 0784bf90c7ed..20438bf1ec16 100644 --- a/lighthouse-core/report/v2/report-generator.js +++ b/lighthouse-core/report/v2/report-generator.js @@ -46,7 +46,7 @@ class ReportGeneratorV2 { /** * Computes the weighted-average of the score of the list of items. - * @param {!Array<{score: number|undefined, weight: number|undefined}} items + * @param {!Array<{score: number|undefined, weight: number|undefined}>} items * @return {number} */ static arithmeticMean(items) { diff --git a/lighthouse-core/scripts/generate-combined-coverage.sh b/lighthouse-core/scripts/generate-combined-coverage.sh deleted file mode 100755 index 3c94a4b13b2a..000000000000 --- a/lighthouse-core/scripts/generate-combined-coverage.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -## -# @license Copyright 2017 Google Inc. All Rights Reserved. -# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -## - -# run tests with coverage in both root and cli -yarn run coverage -cd lighthouse-cli && yarn run coverage && cd .. - -# report to coveralls -./node_modules/.bin/lcov-result-merger '**/lcov.info' | ./node_modules/.bin/coveralls -# report to codecov -./node_modules/codecov/bin/codecov diff --git a/package.json b/package.json index 7af2cc0065c3..6892c4aa19da 100644 --- a/package.json +++ b/package.json @@ -12,28 +12,26 @@ }, "scripts": { "install-all": "npm-run-posix-or-windows install-all:task", - "install-all:task": "yarn & yarn install-cli & yarn install-extension & yarn install-viewer & wait", - "install-all:task:windows": "yarn && yarn install-cli && yarn install-extension && yarn install-viewer", - "install-cli": "cd ./lighthouse-cli && yarn install && yarn build", + "install-all:task": "yarn & yarn install-extension & yarn install-viewer & wait", + "install-all:task:windows": "yarn && yarn install-extension && yarn install-viewer", "install-extension": "cd ./lighthouse-extension && yarn install", "install-viewer": "cd ./lighthouse-viewer && yarn install", "build-all": "npm-run-posix-or-windows build-all:task", - "build-all:task": "yarn build-cli & yarn build-extension & yarn build-viewer & wait", - "build-all:task:windows": "yarn build-cli && yarn build-extension && yarn build-viewer", - "build-cli": "cd ./lighthouse-cli && yarn build", + "build-all:task": "yarn build-extension & yarn build-viewer & wait", + "build-all:task:windows": "yarn build-extension && yarn build-viewer", "build-extension": "cd ./lighthouse-extension && yarn build", "build-viewer": "cd ./lighthouse-viewer && yarn build", "clean": "rimraf *.report.html *.report.dom.html *.report.json *.screenshots.html *.devtoolslog.json *.trace.json || true", "lint": "[ \"$CI\" = true ] && eslint --quiet -f codeframe . || eslint .", "smoke": "bash lighthouse-cli/test/smokehouse/run-all-tests.sh", "coverage": "istanbul cover -x \"**/third_party/**\" _mocha -- $(find */test -name '*-test.js') --timeout 10000 --reporter progress --report lcovonly", + "coveralls": "yarn coverage && cat ./coverage/lcov.info | coveralls && ./node_modules/codecov/bin/codecov", "start": "node ./lighthouse-cli/index.js", - "test": "yarn lint --quiet && yarn unit && yarn closure && yarn test-cli-formatting", + "test": "yarn lint --quiet && yarn unit && yarn closure", "unit-core": "bash lighthouse-core/scripts/run-mocha.sh --core", "unit-cli": "bash lighthouse-core/scripts/run-mocha.sh --cli", "unit-viewer": "bash lighthouse-core/scripts/run-mocha.sh --viewer", "unit": "bash lighthouse-core/scripts/run-mocha.sh --default", - "test-cli-formatting": "cd lighthouse-cli && ./test/check-formatting.sh && cd ..", "core-unit": "yarn unit-core", "cli-unit": "yarn unit-cli", "viewer-unit": "yarn unit-viewer", @@ -49,7 +47,6 @@ "plots-smoke": "bash plots/test/smoke.sh" }, "devDependencies": { - "@types/node": "^6.0.45", "babel-core": "^6.16.0", "bundlesize": "^0.14.4", "codecov": "^2.2.0", @@ -64,12 +61,18 @@ "gulp-util": "^3.0.7", "istanbul": "^0.4.3", "jsdom": "^9.12.0", - "lcov-result-merger": "^1.2.0", "mocha": "^3.2.0", "npm-run-posix-or-windows": "^2.0.2", + "typescript": "^2.6.1", "zone.js": "^0.7.3" }, "dependencies": { + "@types/configstore": "^2.1.1", + "@types/inquirer": "^0.0.35", + "@types/node": "*", + "@types/opn": "^3.0.28", + "@types/update-notifier": "^1.0.2", + "@types/yargs": "^8.0.2", "axe-core": "2.4.1", "chrome-devtools-frontend": "1.0.422034", "chrome-launcher": "0.8.1", diff --git a/typings/externs.d.ts b/typings/externs.d.ts new file mode 100644 index 000000000000..3b7b96b56f73 --- /dev/null +++ b/typings/externs.d.ts @@ -0,0 +1,82 @@ +/** + * @license Copyright 2017 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ + +export as namespace LH + +export interface Flags { + _: string[]; + port: number; + chromeFlags: string; + output: any; + outputPath: string; + saveArtifacts: boolean; + saveAssets: boolean; + view: boolean; + maxWaitForLoad: number; + logLevel: string; + hostname: string; + blockedUrlPatterns: string[]; + enableErrorReporting: boolean; + listAllAudits: boolean; + listTraceCategories: boolean; + configPath?: string; + perf: boolean; + verbose: boolean; + quiet: boolean; +} + +export interface Config { + +} + +export interface AuditResult { + rawValue: boolean|number; + displayValue?: string; + debugString?: string; + score?: boolean|number; + optimalValue: number|string; + extendedInfo?: {value: string;}; +} + +export interface AuditResults { + [metric: string]: AuditResult +} + +export interface AuditFullResult { + rawValue: boolean|number; + displayValue: string; + debugString?: string; + score: boolean|number; + scoringMode: string; + error?: boolean; + description: string; + name: string; + helpText?: string; + extendedInfo?: {value: string}; +} + +export interface AuditFullResults { + [metric: string]: AuditFullResult +} + +export interface Results { + url: string; + audits: AuditFullResults; + lighthouseVersion: string; + artifacts?: Object; + initialUrl: string; + generatedTime: string; +} + +export interface LaunchedChrome { + pid: number; + port: number; + kill: () => Promise<{}>; +} + +export interface LighthouseError extends Error { + code?: string +} diff --git a/typings/lighthouse-logger/index.d.ts b/typings/lighthouse-logger/index.d.ts new file mode 100644 index 000000000000..bfd61e488037 --- /dev/null +++ b/typings/lighthouse-logger/index.d.ts @@ -0,0 +1,15 @@ +/** + * @license Copyright 2017 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ + +declare module 'lighthouse-logger' { + export function setLevel(level: string): void; + export function formatProtocol(prefix: string, data: Object, level?: string): void; + export function log(title: string, ...args: any[]): void; + export function warn(title: string, ...args: any[]): void; + export function error(title: string, ...args: any[]): void; + export function verbose(title: string, ...args: any[]): void; + export function reset(): string; +} diff --git a/typings/main.d.ts b/typings/main.d.ts deleted file mode 100644 index bd39bc28e538..000000000000 --- a/typings/main.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// - diff --git a/typings/main/ambient/assert/index.d.ts b/typings/main/ambient/assert/index.d.ts deleted file mode 100644 index fa09e8d1dcce..000000000000 --- a/typings/main/ambient/assert/index.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -// Generated by typings -// Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/7de6c3dd94feaeb21f20054b9f30d5dabc5efabd/assert/assert.d.ts -// Type definitions for assert and power-assert -// Project: https://github.com/Jxck/assert -// Project: https://github.com/twada/power-assert -// Definitions by: vvakame -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped - -// copy from assert external module in node.d.ts - -declare function assert(value:any, message?:string):void; -declare namespace assert { - export class AssertionError implements Error { - name:string; - message:string; - actual:any; - expected:any; - operator:string; - generatedMessage:boolean; - - constructor(options?:{message?: string; actual?: any; expected?: any; operator?: string; stackStartFunction?: Function}); - } - - export function fail(actual?:any, expected?:any, message?:string, operator?:string):void; - - export function ok(value:any, message?:string):void; - - export function equal(actual:any, expected:any, message?:string):void; - - export function notEqual(actual:any, expected:any, message?:string):void; - - export function deepEqual(actual:any, expected:any, message?:string):void; - - export function notDeepEqual(acutal:any, expected:any, message?:string):void; - - export function strictEqual(actual:any, expected:any, message?:string):void; - - export function notStrictEqual(actual:any, expected:any, message?:string):void; - - export var throws:{ - (block:Function, message?:string): void; - (block:Function, error:Function, message?:string): void; - (block:Function, error:RegExp, message?:string): void; - (block:Function, error:(err:any) => boolean, message?:string): void; - }; - - export var doesNotThrow:{ - (block:Function, message?:string): void; - (block:Function, error:Function, message?:string): void; - (block:Function, error:RegExp, message?:string): void; - (block:Function, error:(err:any) => boolean, message?:string): void; - }; - - export function ifError(value:any):void; -} - -// duplicate to node.d.ts -// declare module "assert" { -// export = assert; -// } - -// move to power-assert.d.ts. do not use this definition file. -declare module "power-assert" { - export = assert; -} \ No newline at end of file diff --git a/typings/yargs-parser/index.d.ts b/typings/yargs-parser/index.d.ts new file mode 100644 index 000000000000..a47ad0de83f4 --- /dev/null +++ b/typings/yargs-parser/index.d.ts @@ -0,0 +1,22 @@ +/** + * @license Copyright 2017 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ + +declare module 'yargs-parser' { + interface Options { + configuration: Configuration; + } + interface Configuration { + 'camel-case-expansion': boolean; + 'boolean-negation': boolean; + } + // from @types/yargs + interface Arguments { + [ argName: string ]: any; + } + function yargsParser(args: string, opts: Options): Arguments; + + export = yargsParser; +} diff --git a/yarn.lock b/yarn.lock index 543879453381..f3410b0fccd7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,26 +2,145 @@ # yarn lockfile v1 +"@types/configstore@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-2.1.1.tgz#cd1e8553633ad3185c3f2f239ecff5d2643e92b6" + "@types/core-js@^0.9.41": version "0.9.43" resolved "https://registry.yarnpkg.com/@types/core-js/-/core-js-0.9.43.tgz#65d646c5e8c0cd1bdee37065799f9d3d48748253" +"@types/inquirer@^0.0.35": + version "0.0.35" + resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-0.0.35.tgz#e054657cf2d10963823957d4d06ec244f05c65be" + dependencies: + "@types/rx" "*" + "@types/through" "*" + "@types/mkdirp@^0.3.29": version "0.3.29" resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.3.29.tgz#7f2ad7ec55f914482fc9b1ec4bb1ae6028d46066" +"@types/node@*": + version "8.0.47" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.47.tgz#968e596f91acd59069054558a00708c445ca30c2" + "@types/node@6.0.66": version "6.0.66" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.66.tgz#5680b74a6135d33d4c00447e7c3dc691a4601625" -"@types/node@^6.0.45": - version "6.0.46" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.46.tgz#8d9e48572831f05b11cc4c793754d43437219d62" +"@types/opn@^3.0.28": + version "3.0.28" + resolved "https://registry.yarnpkg.com/@types/opn/-/opn-3.0.28.tgz#097d0d1c9b5749573a5d96df132387bb6d02118a" + dependencies: + "@types/node" "*" "@types/rimraf@^0.0.28": version "0.0.28" resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-0.0.28.tgz#5562519bc7963caca8abf7f128cae3b594d41d06" +"@types/rx-core-binding@*": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/rx-core-binding/-/rx-core-binding-4.0.4.tgz#d969d32f15a62b89e2862c17b3ee78fe329818d3" + dependencies: + "@types/rx-core" "*" + +"@types/rx-core@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/rx-core/-/rx-core-4.0.3.tgz#0b3354b1238cedbe2b74f6326f139dbc7a591d60" + +"@types/rx-lite-aggregates@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/rx-lite-aggregates/-/rx-lite-aggregates-4.0.3.tgz#6efb2b7f3d5f07183a1cb2bd4b1371d7073384c2" + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-async@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/rx-lite-async/-/rx-lite-async-4.0.2.tgz#27fbf0caeff029f41e2d2aae638b05e91ceb600c" + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-backpressure@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/rx-lite-backpressure/-/rx-lite-backpressure-4.0.3.tgz#05abb19bdf87cc740196c355e5d0b37bb50b5d56" + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-coincidence@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/rx-lite-coincidence/-/rx-lite-coincidence-4.0.3.tgz#80bd69acc4054a15cdc1638e2dc8843498cd85c0" + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-experimental@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/rx-lite-experimental/-/rx-lite-experimental-4.0.1.tgz#c532f5cbdf3f2c15da16ded8930d1b2984023cbd" + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-joinpatterns@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/rx-lite-joinpatterns/-/rx-lite-joinpatterns-4.0.1.tgz#f70fe370518a8432f29158cc92ffb56b4e4afc3e" + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-testing@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/rx-lite-testing/-/rx-lite-testing-4.0.1.tgz#21b19d11f4dfd6ffef5a9d1648e9c8879bfe21e9" + dependencies: + "@types/rx-lite-virtualtime" "*" + +"@types/rx-lite-time@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/rx-lite-time/-/rx-lite-time-4.0.3.tgz#0eda65474570237598f3448b845d2696f2dbb1c4" + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite-virtualtime@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/rx-lite-virtualtime/-/rx-lite-virtualtime-4.0.3.tgz#4b30cacd0fe2e53af29f04f7438584c7d3959537" + dependencies: + "@types/rx-lite" "*" + +"@types/rx-lite@*": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/rx-lite/-/rx-lite-4.0.5.tgz#b3581525dff69423798daa9a0d33c1e66a5e8c4c" + dependencies: + "@types/rx-core" "*" + "@types/rx-core-binding" "*" + +"@types/rx@*": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@types/rx/-/rx-4.1.1.tgz#598fc94a56baed975f194574e0f572fd8e627a48" + dependencies: + "@types/rx-core" "*" + "@types/rx-core-binding" "*" + "@types/rx-lite" "*" + "@types/rx-lite-aggregates" "*" + "@types/rx-lite-async" "*" + "@types/rx-lite-backpressure" "*" + "@types/rx-lite-coincidence" "*" + "@types/rx-lite-experimental" "*" + "@types/rx-lite-joinpatterns" "*" + "@types/rx-lite-testing" "*" + "@types/rx-lite-time" "*" + "@types/rx-lite-virtualtime" "*" + +"@types/through@*": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.29.tgz#72943aac922e179339c651fa34a4428a4d722f93" + dependencies: + "@types/node" "*" + +"@types/update-notifier@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/update-notifier/-/update-notifier-1.0.2.tgz#7a9269a38545bfd90155aac1350669a19f8ecb4a" + +"@types/yargs@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-8.0.2.tgz#0f9c7b236e2d78cd8f4b6502de15d0728aa29385" + abab@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" @@ -721,7 +840,7 @@ conventional-commit-types@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz#5db95739d6c212acbe7b6f656a11b940baa68946" -convert-source-map@^1.1.0, convert-source-map@^1.1.1: +convert-source-map@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" @@ -951,15 +1070,6 @@ duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" -duplexify@^3.2.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604" - dependencies: - end-of-stream "1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -970,12 +1080,6 @@ editor@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" -end-of-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" - dependencies: - once "~1.3.0" - end-of-stream@~0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" @@ -1133,12 +1237,6 @@ expand-tilde@^1.2.1, expand-tilde@^1.2.2: dependencies: os-homedir "^1.0.1" -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - dependencies: - is-extendable "^0.1.0" - extend@^3.0.0, extend@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" @@ -1405,13 +1503,6 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob-parent@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - glob-stream@^3.1.5: version "3.1.18" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" @@ -1423,19 +1514,6 @@ glob-stream@^3.1.5: through2 "^0.6.1" unique-stream "^1.0.0" -glob-stream@^5.3.2: - version "5.3.5" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" - dependencies: - extend "^3.0.0" - glob "^5.0.3" - glob-parent "^3.0.0" - micromatch "^2.3.7" - ordered-read-streams "^0.3.0" - through2 "^0.6.0" - to-absolute-glob "^0.1.1" - unique-stream "^2.0.2" - glob-watcher@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" @@ -1479,7 +1557,7 @@ glob@^4.3.1: minimatch "^2.0.1" once "^1.3.0" -glob@^5.0.15, glob@^5.0.3: +glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" dependencies: @@ -1587,14 +1665,14 @@ graceful-fs@^3.0.0: dependencies: natives "^1.1.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.2: - version "4.1.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.9.tgz#baacba37d19d11f9d146d3578bc99958c3787e29" - graceful-fs@^4.1.11, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +graceful-fs@^4.1.2: + version "4.1.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.9.tgz#baacba37d19d11f9d146d3578bc99958c3787e29" + graceful-fs@~1.2.0: version "1.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" @@ -1615,16 +1693,6 @@ gulp-replace@^0.5.4: readable-stream "^2.0.1" replacestream "^4.0.0" -gulp-sourcemaps@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c" - dependencies: - convert-source-map "^1.1.1" - graceful-fs "^4.1.2" - strip-bom "^2.0.0" - through2 "^2.0.0" - vinyl "^1.0.0" - gulp-util@^3.0.0, gulp-util@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz#78925c4b8f8b49005ac01a011c557e6218941cbb" @@ -1883,7 +1951,7 @@ is-equal-shallow@^0.1.3: dependencies: is-primitive "^2.0.0" -is-extendable@^0.1.0, is-extendable@^0.1.1: +is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -1891,10 +1959,6 @@ is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" -is-extglob@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" @@ -1917,12 +1981,6 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" - is-my-json-valid@^2.12.4: version "2.15.0" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" @@ -1998,7 +2056,7 @@ is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -2016,10 +2074,6 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" -is-valid-glob@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" - is-windows@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.1.1.tgz#be310715431cfabccc54ab3951210fa0b6d01abe" @@ -2164,7 +2218,7 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: +json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" dependencies: @@ -2230,12 +2284,6 @@ lazy-req@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-2.0.0.tgz#c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4" -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - dependencies: - readable-stream "^2.0.5" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -2246,14 +2294,6 @@ lcov-parse@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" -lcov-result-merger@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/lcov-result-merger/-/lcov-result-merger-1.2.0.tgz#5de1e6426f885929b77357f014de5fee1dad0553" - dependencies: - through2 "^2.0.1" - vinyl "^1.1.1" - vinyl-fs "^2.4.3" - levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -2384,10 +2424,6 @@ lodash.isempty@^4.2.1: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" -lodash.isequal@^4.0.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - lodash.isplainobject@^4.0.4: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -2526,12 +2562,6 @@ meow@^3.3.0, meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" -merge-stream@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - dependencies: - readable-stream "^2.0.1" - merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" @@ -2706,7 +2736,7 @@ object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" -object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" @@ -2780,13 +2810,6 @@ ordered-read-streams@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" -ordered-read-streams@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" - dependencies: - is-stream "^1.0.1" - readable-stream "^2.0.1" - 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" @@ -2864,10 +2887,6 @@ parse5@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - path-exists@2.1.0, path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -3055,18 +3074,6 @@ read-pkg@^2.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.2.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - readable-stream@^2.0.1: version "2.1.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" @@ -3079,6 +3086,18 @@ readable-stream@^2.0.1: string_decoder "~0.10.x" util-deprecate "~1.0.1" +readable-stream@^2.0.2, readable-stream@^2.2.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -3466,10 +3485,6 @@ stream-consume@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -3518,13 +3533,6 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-bom-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" - dependencies: - first-chunk-stream "^1.0.0" - strip-bom "^2.0.0" - strip-bom@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" @@ -3614,21 +3622,14 @@ textextensions@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-1.0.2.tgz#65486393ee1f2bb039a60cbba05b0b68bd9501d2" -through2-filter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" - -through2@^0.6.0, through2@^0.6.1: +through2@^0.6.1: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" dependencies: readable-stream ">=1.0.33-1 <1.1.0-0" xtend ">=4.0.0 <4.1.0-0" -through2@^2.0.0, through2@^2.0.1, through2@~2.0.0: +through2@^2.0.0, through2@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" dependencies: @@ -3665,12 +3666,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-absolute-glob@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" - dependencies: - extend-shallow "^2.0.1" - to-fast-properties@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" @@ -3711,6 +3706,10 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +typescript@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" + uglify-js@^2.6: version "2.7.3" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.3.tgz#39b3a7329b89f5ec507e344c6e22568698ef4868" @@ -3736,13 +3735,6 @@ unique-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" -unique-stream@^2.0.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" - dependencies: - json-stable-stringify "^1.0.0" - through2-filter "^2.0.0" - unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -3798,10 +3790,6 @@ v8flags@^2.0.2: dependencies: user-home "^1.1.1" -vali-date@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" - 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" @@ -3828,28 +3816,6 @@ vinyl-fs@^0.3.0: through2 "^0.6.1" vinyl "^0.4.0" -vinyl-fs@^2.4.3: - version "2.4.4" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" - dependencies: - duplexify "^3.2.0" - glob-stream "^5.3.2" - graceful-fs "^4.0.0" - gulp-sourcemaps "1.6.0" - is-valid-glob "^0.3.0" - lazystream "^1.0.0" - lodash.isequal "^4.0.0" - merge-stream "^1.0.0" - mkdirp "^0.5.0" - object-assign "^4.0.0" - readable-stream "^2.0.4" - strip-bom "^2.0.0" - strip-bom-stream "^1.0.0" - through2 "^2.0.0" - through2-filter "^2.0.0" - vali-date "^1.0.0" - vinyl "^1.0.0" - vinyl-sourcemaps-apply@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" @@ -3871,14 +3837,6 @@ vinyl@^0.5.0: clone-stats "^0.0.1" replace-ext "0.0.1" -vinyl@^1.0.0, vinyl@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - vinyl@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.1.tgz#1c3b4931e7ac4c1efee743f3b91a74c094407bb6"