From 171ad145579c38a1a1b6e06d7f2f54b7936f38e7 Mon Sep 17 00:00:00 2001 From: develar Date: Wed, 16 Nov 2016 08:21:19 +0100 Subject: [PATCH] test: migrate to Jest --- CONTRIBUTING.md | 2 +- README.md | 4 +- package.json | 17 +- src/cliOptions.ts | 4 +- src/packager.ts | 2 +- src/publish/gitHubPublisher.ts | 22 +- src/util/tmp.ts | 9 +- src/winPackager.ts | 11 +- test/fixtures/test-app-one/package.json | 1 + test/jestSetup.js | 34 + test/src/ArtifactPublisherTest.ts | 9 +- test/src/BuildTest.ts | 55 +- test/src/CodeSignTest.ts | 34 +- test/src/RepoSlugTest.ts | 11 +- test/src/globTest.ts | 28 +- test/src/helpers/avaEx.ts | 67 - test/src/helpers/fileAssert.ts | 38 +- test/src/helpers/packTester.ts | 48 +- test/src/helpers/runTests.ts | 60 +- test/src/httpRequestTest.ts | 7 +- test/src/linuxPackagerTest.ts | 1 - test/src/macPackagerTest.ts | 62 +- test/src/nsisTest.ts | 33 +- test/src/nsisUpdaterTest.ts | 21 +- test/src/winPackagerTest.ts | 48 +- test/tsconfig.json | 1 - test/typings/jest-ex.d.ts | 12 + tsconfig.json | 5 +- yarn.lock | 1975 +++++++++-------------- 29 files changed, 1081 insertions(+), 1540 deletions(-) create mode 100644 test/jestSetup.js delete mode 100644 test/src/helpers/avaEx.ts create mode 100644 test/typings/jest-ex.d.ts diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dc79f4ece0c..91f89ff9794 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,7 +12,7 @@ This includes: - log of the terminal output - node version - npm version -- on which system do you want to create installers (MacOS, Windows or Linux) +- on which system do you want to create installers (macOS, Windows or Linux) # Pull Requests To check that your contributions match the project coding style make sure `npm test` passes. diff --git a/README.md b/README.md index eeef43c008f..efeb36b0bf6 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # electron-builder [![npm version](https://img.shields.io/npm/v/electron-builder.svg)](https://npmjs.org/package/electron-builder) [![donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W6V79R2RGCCHL) -A complete solution to package and build a ready for distribution Electron app for MacOS, Windows and Linux with “auto update” support out of the box. +A complete solution to package and build a ready for distribution Electron app for macOS, Windows and Linux with “auto update” support out of the box. * NPM packages management: * [Native application dependencies](http://electron.atom.io/docs/latest/tutorial/using-native-node-modules/) compilation. @@ -9,7 +9,7 @@ A complete solution to package and build a ready for distribution Electron app f * [Build version management](https://github.com/electron-userland/electron-builder/wiki/Options#build-version-management). * Numerous target formats: * All platforms: `7z`, `zip`, `tar.xz`, `tar.lz`, `tar.gz`, `tar.bz2`, `dir` (unpacked directory). - * [MacOS](https://github.com/electron-userland/electron-builder/wiki/Options#MacOptions-target): `dmg`, `pkg`, `mas`. + * [macOS](https://github.com/electron-userland/electron-builder/wiki/Options#MacOptions-target): `dmg`, `pkg`, `mas`. * [Linux](https://github.com/electron-userland/electron-builder/wiki/Options#LinuxBuildOptions-target): `AppImage`, `deb`, `rpm`, `freebsd`, `pacman`, `p5p`, `apk`. * [Windows](https://github.com/electron-userland/electron-builder/wiki/Options#WinBuildOptions-target): NSIS, Squirrel.Windows. * [Two package.json Structure](https://github.com/electron-userland/electron-builder/wiki/Two-package.json-Structure) is supported, but you are not forced to use it even if you have native production dependencies. diff --git a/package.json b/package.json index 9195297aa9e..849b5a70759 100644 --- a/package.json +++ b/package.json @@ -97,9 +97,9 @@ "devDependencies": { "@develar/semantic-release": "^6.3.21", "@types/ini": "^1.3.29", + "@types/jest": "^16.0.0", "@types/js-yaml": "^3.5.28", "@types/source-map-support": "^0.2.28", - "ava-tf": "^0.16.4", "babel-plugin-array-includes": "^2.0.3", "babel-plugin-transform-async-to-module-method": "^6.16.0", "babel-plugin-transform-es2015-destructuring": "^6.18.0", @@ -111,6 +111,7 @@ "depcheck": "^0.6.4", "diff": "^3.0.1", "husky": "^0.11.9", + "jest-cli": "^17.0.3", "json8": "^0.9.2", "path-sort": "^0.1.0", "ts-babel": "^1.1.4", @@ -149,6 +150,20 @@ "test/out/*.js" ] }, + "jest": { + "testEnvironment": "node", + "testPathDirs": [ + "test/out" + ], + "testPathIgnorePatterns": [ + "/helpers/" + ], + "testRegex": "\\.js$", + "modulePaths": [ + "" + ], + "setupTestFrameworkScriptFile": "test/jestSetup.js" + }, "release": { "verifyConditions": [] }, diff --git a/src/cliOptions.ts b/src/cliOptions.ts index 99f748179e1..8a5226de300 100644 --- a/src/cliOptions.ts +++ b/src/cliOptions.ts @@ -8,14 +8,14 @@ const deprecated = "Deprecated:" export function createYargs(): any { //noinspection ReservedWordAsName return yargs - .example("build -mwl", "build for MacOS, Windows and Linux") + .example("build -mwl", "build for macOS, Windows and Linux") .example("build --linux deb tar.xz", "build deb and tar.xz for Linux") .example("build --win --ia32", "build for Windows ia32") .example("build --em.foo=bar", "set application package.json property `foo` to `bar`") .option("mac", { group: buildGroup, alias: ["m", "o", "macos"], - describe: `Build for MacOS, accepts target list (see ${underline("https://goo.gl/HAnnq8")}).`, + describe: `Build for macOS, accepts target list (see ${underline("https://goo.gl/HAnnq8")}).`, type: "array", }) .option("linux", { diff --git a/src/packager.ts b/src/packager.ts index 16fee034dfa..7710a96371e 100644 --- a/src/packager.ts +++ b/src/packager.ts @@ -109,7 +109,7 @@ export class Packager implements BuildInfo { let checkWine = this.options.platformPackagerFactory == null for (let [platform, archToType] of this.options.targets!) { if (platform === Platform.MAC && process.platform === Platform.WINDOWS.nodeName) { - throw new Error("Build for MacOS is supported only on MacOS, please see https://github.com/electron-userland/electron-builder/wiki/Multi-Platform-Build") + throw new Error("Build for macOS is supported only on macOS, please see https://github.com/electron-userland/electron-builder/wiki/Multi-Platform-Build") } let wineCheck: Promise | null = null diff --git a/src/publish/gitHubPublisher.ts b/src/publish/gitHubPublisher.ts index f8f7271f629..6aa27d4076d 100644 --- a/src/publish/gitHubPublisher.ts +++ b/src/publish/gitHubPublisher.ts @@ -25,7 +25,7 @@ interface Asset { export class GitHubPublisher extends Publisher { private tag: string - private _releasePromise: BluebirdPromise + private _releasePromise: Promise private readonly token: string private readonly policy: PublishPolicy @@ -54,7 +54,7 @@ export class GitHubPublisher extends Publisher { } this.tag = info.vPrefixedTagName === false ? version : `v${version}` - this._releasePromise = this.token === "__test__" ? BluebirdPromise.resolve(null) : >this.init() + this._releasePromise = this.token === "__test__" ? BluebirdPromise.resolve(null) : this.init() } private async init(): Promise { @@ -153,16 +153,12 @@ export class GitHubPublisher extends Publisher { // test only //noinspection JSUnusedGlobalSymbols async getRelease(): Promise { - return githubRequest(`/repos/${this.info.owner}/${this.info.repo}/releases/${this._releasePromise.value().id}`, this.token) + return githubRequest(`/repos/${this.info.owner}/${this.info.repo}/releases/${(await this._releasePromise).id}`, this.token) } //noinspection JSUnusedGlobalSymbols async deleteRelease(): Promise { - if (!this._releasePromise.isFulfilled()) { - return - } - - const release = this._releasePromise.value() + const release = await this._releasePromise if (release == null) { return } @@ -172,8 +168,14 @@ export class GitHubPublisher extends Publisher { return await githubRequest(`/repos/${this.info.owner}/${this.info.repo}/releases/${release.id}`, this.token, null, "DELETE") } catch (e) { - if (e instanceof HttpError && (e.response.statusCode === 405 || e.response.statusCode === 502)) { - continue + if (e instanceof HttpError) { + if (e.response.statusCode === 404) { + warn(`Cannot delete release ${release.id} — doesn't exist`) + return + } + else if (e.response.statusCode === 405 || e.response.statusCode === 502) { + continue + } } throw e diff --git a/src/util/tmp.ts b/src/util/tmp.ts index 0cfca70b5f2..8350e092e73 100644 --- a/src/util/tmp.ts +++ b/src/util/tmp.ts @@ -7,6 +7,8 @@ import { warn } from "./log" const mkdtemp: any | null = require("fs-extra-p").mkdtemp +process.setMaxListeners(20) + export class TmpDir { private tmpFileCounter = 0 private tempDirectoryPromise: BluebirdPromise @@ -27,7 +29,7 @@ export class TmpDir { this.tempDirectoryPromise = promise .then(dir => { this.dir = dir - process.on("SIGINT", () => { + const cleanup = () => { if (this.dir == null) { return } @@ -41,7 +43,10 @@ export class TmpDir { warn(`Cannot delete temporary dir "${dir}": ${(e.stack || e).toString()}`) } } - }) + } + process.on("exit", cleanup) + process.on("uncaughtException", cleanup) + process.on("SIGINT", cleanup) return dir }) } diff --git a/src/winPackager.ts b/src/winPackager.ts index 83f3dd52f8a..6442fb74c82 100644 --- a/src/winPackager.ts +++ b/src/winPackager.ts @@ -23,7 +23,7 @@ export interface FileCodeSigningInfo { export class WinPackager extends PlatformPackager { readonly cscInfo: Promise | null - private readonly iconPath: Promise + private iconPath: Promise | null constructor(info: BuildInfo) { super(info) @@ -59,8 +59,6 @@ export class WinPackager extends PlatformPackager { subjectName: subjectName }) } - - this.iconPath = this.getValidIconPath() } protected doGetCscPassword(): string { @@ -95,8 +93,11 @@ export class WinPackager extends PlatformPackager { return Platform.WINDOWS } - async getIconPath() { - return await this.iconPath + getIconPath() { + if (this.iconPath == null) { + this.iconPath = this.getValidIconPath() + } + return this.iconPath } private async getValidIconPath(): Promise { diff --git a/test/fixtures/test-app-one/package.json b/test/fixtures/test-app-one/package.json index 39e6921f118..ee0671ce0a4 100755 --- a/test/fixtures/test-app-one/package.json +++ b/test/fixtures/test-app-one/package.json @@ -12,6 +12,7 @@ "appId": "org.electron-builder.testApp", "iconUrl": "https://raw.githubusercontent.com/szwacz/electron-boilerplate/master/resources/windows/icon.ico", "compression": "store", + "npmRebuild": false, "mac": { "category": "your.app.category.type" }, diff --git a/test/jestSetup.js b/test/jestSetup.js new file mode 100644 index 00000000000..b859caa0de4 --- /dev/null +++ b/test/jestSetup.js @@ -0,0 +1,34 @@ +"use strict" + +require('source-map-support').install() + +const isWindows = process.platform === "win32" +const isCi = (process.env.CI || "").toLowerCase() === "true" + +// Squirrel.Windows msi is very slow +jasmine.DEFAULT_TIMEOUT_INTERVAL = (isWindows ? 10 : 10) * 1000 * 60 + +if (!isWindows || isCi) { + //noinspection JSUnresolvedVariable + it = it.concurrent + //noinspection JSUnresolvedVariable + test = it +} + +test.ifMac = process.platform === "darwin" ? test : test.skip +test.ifNotWindows = isWindows ? test.skip : test + +if (isCi) { + test.ifCi = test + test.ifNotCi = test.skip +} +else { + test.ifCi = test.skip + test.ifNotCi = test +} + +test.ifNotCiMac = isCi && process.platform === "darwin" ? test.skip : test + +test.ifDevOrWinCi = !isCi || isWindows ? test : test.skip +test.ifDevOrLinuxCi = !isCi || process.platform === "linux" ? test : test.skip +test.ifWinCi = isCi && isWindows ? test : test.skip \ No newline at end of file diff --git a/test/src/ArtifactPublisherTest.ts b/test/src/ArtifactPublisherTest.ts index dce86c51943..1cb4f1c5b0c 100644 --- a/test/src/ArtifactPublisherTest.ts +++ b/test/src/ArtifactPublisherTest.ts @@ -1,4 +1,3 @@ -import test from "./helpers/avaEx" import { GitHubPublisher } from "out/publish/gitHubPublisher" import { HttpError } from "out/publish/restApiRequest" import { join } from "path" @@ -6,6 +5,12 @@ import { assertThat } from "./helpers/fileAssert" import { BintrayPublisher } from "out/publish/BintrayPublisher" import { createPublisher } from "out/builder" +if (process.env.CI && process.platform === "win32") { + fit("Skip ArtifactPublisherTest suite on Windows CI", () => { + console.warn("[SKIP] Skip ArtifactPublisherTest suite on Windows CI") + }) +} + function getRandomInt(min: number, max: number) { return Math.floor(Math.random() * (max - min + 1)) + min } @@ -103,7 +108,7 @@ testAndIgnoreApiRate("GitHub upload org", async () => { } }) -test("create publisher", async () => { +it("create publisher", async () => { const packager: any = { metadata: { version: "2.0.0", diff --git a/test/src/BuildTest.ts b/test/src/BuildTest.ts index 53d23cb65f1..627b15d841c 100755 --- a/test/src/BuildTest.ts +++ b/test/src/BuildTest.ts @@ -1,5 +1,7 @@ -import test from "./helpers/avaEx" -import { assertPack, modifyPackageJson, platform, getPossiblePlatforms, app, appThrows, packageJson } from "./helpers/packTester" +import { + assertPack, modifyPackageJson, getPossiblePlatforms, app, appThrows, packageJson, + appTwoThrows +} from "./helpers/packTester" import { move, outputJson } from "fs-extra-p" import BluebirdPromise from "bluebird-lst-c" import * as path from "path" @@ -82,31 +84,31 @@ test("custom output dir", app(allPlatforms(false), { } })) -test("build in the app package.json", t => t.throws(assertPack("test-app", allPlatforms(), { +test("build in the app package.json", appTwoThrows(/'build' in the application package\.json .+/, allPlatforms(), { projectDirCreated: it => modifyPackageJson(it, data => { data.build = { "iconUrl": "bar", } }, true) -}), /'build' in the application package\.json .+/)) +})) test("name in the build", appThrows(/'name' in the 'build' is forbidden/, currentPlatform(), {projectDirCreated: packageJson(it => it.build = {"name": "Cool App"})})) // this test also test appMetadata, so, we must use test-app here -test("empty description", t => t.throws(assertPack("test-app", { +test("empty description", appTwoThrows(/Please specify 'description'/, { targets: Platform.LINUX.createTarget(), appMetadata: { description: "", } -}), /Please specify 'description'/)) +})) -test("invalid main in the app package.json", t => t.throws(assertPack("test-app", allPlatforms(false), { +test("invalid main in the app package.json", appTwoThrows(/Application entry file "main.js" in the /, allPlatforms(false), { projectDirCreated: projectDir => modifyPackageJson(projectDir, data => { data.main = "main.js" }, true) -}), /Application entry file "main.js" in the /)) +})) -test("invalid main in the app package.json (no asar)", t => t.throws(assertPack("test-app", allPlatforms(false), { +test("invalid main in the app package.json (no asar)", appTwoThrows(`Application entry file "main.js" does not exist. Seems like a wrong configuration.`, allPlatforms(false), { projectDirCreated: projectDir => { return BluebirdPromise.all([ modifyPackageJson(projectDir, data => { @@ -117,9 +119,9 @@ test("invalid main in the app package.json (no asar)", t => t.throws(assertPack( }) ]) } -}), `Application entry file "main.js" does not exist. Seems like a wrong configuration.`)) +})) -test("invalid main in the app package.json (custom asar)", t => t.throws(assertPack("test-app", allPlatforms(false), { +test("invalid main in the app package.json (custom asar)", appTwoThrows(/Application entry file "main.js" in the ("[^"]*") does not exist\. Seems like a wrong configuration\./, allPlatforms(false), { projectDirCreated: projectDir => { return BluebirdPromise.all([ modifyPackageJson(projectDir, data => { @@ -130,7 +132,7 @@ test("invalid main in the app package.json (custom asar)", t => t.throws(assertP }) ]) } -}), /Application entry file "main.js" in the ("[^"]*") does not exist\. Seems like a wrong configuration\./)) +})) test("main in the app package.json (no asar)", () => assertPack("test-app", allPlatforms(false), { projectDirCreated: projectDir => { @@ -165,7 +167,7 @@ test("relative index", () => assertPack("test-app", allPlatforms(false), { }, true) })) -test.ifDevOrLinuxCi("electron version from electron-prebuilt dependency", app({ +it.ifDevOrLinuxCi("electron version from electron-prebuilt dependency", app({ targets: Platform.LINUX.createTarget(DIR_TARGET), }, { projectDirCreated: projectDir => BluebirdPromise.all([ @@ -206,7 +208,7 @@ test("www as default dir", () => assertPack("test-app", currentPlatform(), { projectDirCreated: projectDir => move(path.join(projectDir, "app"), path.join(projectDir, "www")) })) -test("afterPack", t => { +test("afterPack", () => { const targets = process.env.CI ? Platform.fromString(process.platform).createTarget(DIR_TARGET) : getPossiblePlatforms(DIR_TARGET) let called = 0 return assertPack("test-app-one", { @@ -221,7 +223,7 @@ test("afterPack", t => { } }, { packed: () => { - t.is(called, targets.size) + expect(called).toEqual(targets.size) return BluebirdPromise.resolve() } }) @@ -278,25 +280,22 @@ test.ifDevOrLinuxCi("extra metadata - two", () => { }) }) -test.ifOsx("extra metadata - override icon", t => t.throws((() => { - const extraMetadata = { +test.ifMac("extra metadata - override icon", appTwoThrows(/ENOENT: no such file or directory/, { + targets: Platform.MAC.createTarget(DIR_TARGET), + extraMetadata: { build: { mac: { icon: "dev" } }, + }, +}, { + packed: async context => { + await assertThat(path.join(context.getContent(Platform.LINUX), "NewName")).isFile() } - return assertPack("test-app", { - targets: Platform.OSX.createTarget(DIR_TARGET), - extraMetadata: extraMetadata, - }, { - packed: async context => { - await assertThat(path.join(context.getContent(Platform.LINUX), "NewName")).isFile() - } - }) -})(), /ENOENT: no such file or directory/)) +})) -// test.ifOsx("app-executable-deps", () => { +// ifMac("app-executable-deps", () => { // return assertPack("app-executable-deps", { // targets: Platform.current().createTarget(DIR_TARGET), // }, { @@ -332,8 +331,6 @@ test.ifDevOrLinuxCi("smart unpack", () => { }) }) -test.ifWinCi("Build MacOS on Windows is not supported", appThrows(/Build for MacOS is supported only on MacOS.+/, platform(Platform.MAC))) - function allPlatforms(dist: boolean = true): PackagerOptions { return { targets: getPossiblePlatforms(dist ? null : DIR_TARGET), diff --git a/test/src/CodeSignTest.ts b/test/src/CodeSignTest.ts index ac16002e276..e2201355872 100644 --- a/test/src/CodeSignTest.ts +++ b/test/src/CodeSignTest.ts @@ -1,28 +1,28 @@ import { createKeychain } from "out/codeSign" import { assertThat } from "./helpers/fileAssert" -import test from "./helpers/avaEx" import { CSC_LINK } from "./helpers/codeSignData" import { removePassword } from "out/util/util" import { TmpDir } from "out/util/tmp" -const tmpDir = new TmpDir() - if (process.env.CSC_KEY_PASSWORD == null) { - console.warn("Skip keychain-specific tests because CSC_KEY_PASSWORD is not defined") -} -else { - test.ifOsx("create keychain", async () => { - const result = await createKeychain(tmpDir, CSC_LINK, process.env.CSC_KEY_PASSWORD) - assertThat(result.keychainName).isNotEmpty() - }) - - test.ifOsx("create keychain with installers", async () => { - const result = await createKeychain(tmpDir, CSC_LINK, process.env.CSC_KEY_PASSWORD) - assertThat(result.keychainName).isNotEmpty() + fit("Skip keychain-specific tests because CSC_KEY_PASSWORD is not defined", () => { + console.warn("[SKIP] Skip keychain-specific tests because CSC_KEY_PASSWORD is not defined") }) } -test.ifOsx("remove password from log", async () => { - assertThat(removePassword("seq -P foo -B")).isEqualTo("seq -P 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae (sha256 hash) -B") - assertThat(removePassword("pass:foo")).isEqualTo("pass:2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae (sha256 hash)") +const tmpDir = new TmpDir() + +test.ifMac("create keychain", async () => { + const result = await createKeychain(tmpDir, CSC_LINK, process.env.CSC_KEY_PASSWORD) + assertThat(result.keychainName).isNotEmpty() +}) + +test.ifMac("create keychain with installers", async () => { + const result = await createKeychain(tmpDir, CSC_LINK, process.env.CSC_KEY_PASSWORD) + assertThat(result.keychainName).isNotEmpty() +}) + +test.ifDevOrLinuxCi("remove password from log", async () => { + expect(removePassword("seq -P foo -B")).toEqual("seq -P 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae (sha256 hash) -B") + expect(removePassword("pass:foo")).toEqual("pass:2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae (sha256 hash)") }) \ No newline at end of file diff --git a/test/src/RepoSlugTest.ts b/test/src/RepoSlugTest.ts index 68f512dd1a7..12eac18b889 100644 --- a/test/src/RepoSlugTest.ts +++ b/test/src/RepoSlugTest.ts @@ -1,14 +1,11 @@ -import { Info } from "hosted-git-info" import { assertThat } from "./helpers/fileAssert" -import test from "ava-tf" -import BluebirdPromise from "bluebird-lst-c" import { getRepositoryInfo } from "out/repositoryInfo" -test("repo slug from TRAVIS_REPO_SLUG", () => { +test("repo slug from TRAVIS_REPO_SLUG", async () => { const oldValue = process.env.TRAVIS_REPO_SLUG try { process.env.TRAVIS_REPO_SLUG = "travis-ci/travis-build" - const info = (>getRepositoryInfo()).value() + const info = await getRepositoryInfo() assertThat(info).hasProperties({ user: "travis-ci", project: "travis-build", @@ -28,7 +25,7 @@ function restoreEnv(name: string, value: string) { } } -test("repo slug from APPVEYOR", () => { +test("repo slug from APPVEYOR", async () => { const oldAppveyorAccountName = process.env.APPVEYOR_ACCOUNT_NAME const oldAppveyorProjectName = process.env.APPVEYOR_PROJECT_NAME const travisSlug = process.env.TRAVIS_REPO_SLUG @@ -39,7 +36,7 @@ test("repo slug from APPVEYOR", () => { process.env.APPVEYOR_ACCOUNT_NAME = "travis-ci" process.env.APPVEYOR_PROJECT_NAME = "travis-build" - const info = (>getRepositoryInfo()).value() + const info = await getRepositoryInfo() assertThat(info).hasProperties({ user: "travis-ci", project: "travis-build", diff --git a/test/src/globTest.ts b/test/src/globTest.ts index ac6dde2505d..b3fd2ea630f 100644 --- a/test/src/globTest.ts +++ b/test/src/globTest.ts @@ -1,4 +1,3 @@ -import test from "./helpers/avaEx" import { expectedWinContents } from "./helpers/expectedContents" import { outputFile, symlink } from "fs-extra-p" import { assertPack, modifyPackageJson, getPossiblePlatforms, app } from "./helpers/packTester" @@ -130,7 +129,7 @@ test.ifNotWindows("link", app({ })) // skip on MacOS because we want test only / and \ -test.ifNotCiOsx("ignore node_modules dev dep", () => { +test.ifNotCiMac("ignore node_modules dev dep", () => { const build: any = { asar: false, ignore: (file: string) => { @@ -188,7 +187,7 @@ test("extraResources", async () => { const winDirPrefix = "lib/net45/resources/" //noinspection SpellCheckingInspection - await assertPack("test-app", { + await assertPack("test-app-one", { // to check NuGet package targets: platform.createTarget(platform === Platform.WINDOWS ? "squirrel" : DIR_TARGET), }, { @@ -219,19 +218,22 @@ test("extraResources", async () => { outputFile(path.join(projectDir, "ignoreMe.txt"), "ignoreMe"), ]) }, - packed: async context => { - const base = path.join(context.outDir, platform.buildConfigurationKey + `${platform === Platform.MAC ? "" : "-unpacked"}`) + packed: context => { + const base = path.join(context.outDir, `${platform.buildConfigurationKey}${platform === Platform.MAC ? "" : "-unpacked"}`) let resourcesDir = path.join(base, "resources") if (platform === Platform.MAC) { - resourcesDir = path.join(base, "TestApp.app", "Contents", "Resources") + resourcesDir = path.join(base, `${context.packager.appInfo.productFilename}.app`, "Contents", "Resources") } - await assertThat(path.join(resourcesDir, "foo")).isDirectory() - await assertThat(path.join(resourcesDir, "foo", "nameWithoutDot")).isFile() - await assertThat(path.join(resourcesDir, "bar", "hello.txt")).isFile() - await assertThat(path.join(resourcesDir, "bar", `${process.arch}.txt`)).isFile() - await assertThat(path.join(resourcesDir, osName, `${process.arch}.txt`)).isFile() - await assertThat(path.join(resourcesDir, "platformSpecificR")).isFile() - await assertThat(path.join(resourcesDir, "ignoreMe.txt")).doesNotExist() + + return BluebirdPromise.all([ + assertThat(path.join(resourcesDir, "foo")).isDirectory(), + assertThat(path.join(resourcesDir, "foo", "nameWithoutDot")).isFile(), + assertThat(path.join(resourcesDir, "bar", "hello.txt")).isFile(), + assertThat(path.join(resourcesDir, "bar", `${process.arch}.txt`)).isFile(), + assertThat(path.join(resourcesDir, osName, `${process.arch}.txt`)).isFile(), + assertThat(path.join(resourcesDir, "platformSpecificR")).isFile(), + assertThat(path.join(resourcesDir, "ignoreMe.txt")).doesNotExist(), + ]) }, expectedContents: platform === Platform.WINDOWS ? pathSorter(expectedWinContents.concat( winDirPrefix + "bar/hello.txt", diff --git a/test/src/helpers/avaEx.ts b/test/src/helpers/avaEx.ts deleted file mode 100644 index 04503f644b6..00000000000 --- a/test/src/helpers/avaEx.ts +++ /dev/null @@ -1,67 +0,0 @@ -import test from "ava-tf" - -/* tslint:disable:no-invalid-this no-namespace */ - -declare module "ava-tf" { - namespace test { - export const ifNotWindows: typeof test - export const ifOsx: typeof test - export const ifNotCi: typeof test - export const ifCi: typeof test - export const ifNotCiOsx: typeof test - export const ifDevOrWinCi: typeof test - export const ifWinCi: typeof test - export const ifDevOrLinuxCi: typeof test - export const ifNotTravis: typeof test - } -} - -Object.defineProperties(test, { - "ifNotWindows": { - get: function () { - return process.platform === "win32" ? this.skip : this - } - }, - "ifNotCi": { - get: function () { - return process.env.CI ? this.skip : this - } - }, - "ifCi": { - get: function () { - return process.env.CI ? this : this.skip - } - }, - "ifNotCiOsx": { - get: function () { - return process.env.CI && process.platform === "darwin" ? this.skip : this - } - }, - "ifNotTravis": { - get: function () { - return process.env.TRAVIS ? this.skip : this - } - }, - "ifOsx": { - get: function () { - return process.platform === "darwin" ? this : this.skip - } - }, - "ifDevOrWinCi": { - get: function () { - return process.env.CI == null || process.platform === "win32" ? this : this.skip - } - }, - "ifDevOrLinuxCi": { - get: function () { - return process.env.CI == null || process.platform === "linux" ? this : this.skip - } - }, - "ifWinCi": { - get: function () { - return (process.env.CI || "").toLowerCase() === "true" && process.platform === "win32" ? this : this.skip - } - } -}) - -export default test \ No newline at end of file diff --git a/test/src/helpers/fileAssert.ts b/test/src/helpers/fileAssert.ts index a1a4dc88d75..728f1bc2b56 100644 --- a/test/src/helpers/fileAssert.ts +++ b/test/src/helpers/fileAssert.ts @@ -1,4 +1,4 @@ -import { stat, Stats } from "fs-extra-p" +import { stat, Stats, access } from "fs-extra-p" import * as json8 from "json8" import { green, red, gray } from "chalk" import { diffJson } from "diff" @@ -26,24 +26,10 @@ class Assertions { compare(this.actual, expected) } - isNotEqualTo(expected: any) { - compare(this.actual, expected, true) - } - isNotEmpty() { compare(this.actual, "", true) } - isNotNull() { - compare(this.actual, null, true) - } - - doesNotMatch(pattern: RegExp) { - if ((this.actual).match(pattern)) { - throw new Error(`${this.actual} matches ${pattern}`) - } - } - containsAll(expected: Iterable) { compare(this.actual.slice().sort(), Array.from(expected).slice().sort()) } @@ -80,7 +66,7 @@ class Assertions { async doesNotExist() { try { - await stat(this.actual) + await access(this.actual) } catch (e) { return @@ -88,6 +74,26 @@ class Assertions { throw new Error(`Path ${this.actual} must not exist`) } + + async throws(error: string | RegExp) { + let actualError: Error | null + let result: any + try { + result = await this.actual + } + catch (e) { + actualError = e + } + + expect(() => { + if (actualError == null) { + return result + } + else { + throw actualError + } + }).toThrowError(error) + } } export function prettyDiff(actual: any, expected: any): string { diff --git a/test/src/helpers/packTester.ts b/test/src/helpers/packTester.ts index 6735ea53739..a267f7d0a02 100755 --- a/test/src/helpers/packTester.ts +++ b/test/src/helpers/packTester.ts @@ -14,7 +14,6 @@ import DecompressZip from "decompress-zip" import { convertVersion } from "out/targets/squirrelPack" import { TEST_DIR } from "./config" import { deepAssign } from "out/util/deepAssign" -import { AssertContext } from "ava-tf" import { SquirrelWindowsOptions } from "out/options/winOptions" import { spawn } from "out/util/util" @@ -44,13 +43,19 @@ interface PackedContext { readonly getResources: (platform: Platform, arch?: Arch) => string readonly getContent: (platform: Platform) => string + + readonly packager: Packager } let tmpDirCounter = 0 const testDir = path.join(TEST_DIR, process.pid.toString(16)) export function appThrows(error: RegExp, packagerOptions: PackagerOptions, checkOptions: AssertPackOptions = {}) { - return (t: AssertContext) => t.throws(assertPack("test-app-one", packagerOptions, checkOptions), error) + return () => assertThat(assertPack("test-app-one", packagerOptions, checkOptions)).throws(error) +} + +export function appTwoThrows(error: string | RegExp, packagerOptions: PackagerOptions, checkOptions: AssertPackOptions = {}) { + return () => assertThat(assertPack("test-app", packagerOptions, checkOptions)).throws(error) } export function app(packagerOptions: PackagerOptions, checkOptions: AssertPackOptions = {}) { @@ -109,7 +114,7 @@ export async function assertPack(fixtureName: string, packagerOptions: PackagerO } const outDir = useTempDir ? path.join(projectDir, OUT_DIR_NAME) : dirToDelete - await packAndCheck(outDir, Object.assign({ + const packager = await packAndCheck(outDir, Object.assign({ projectDir: projectDir, }, packagerOptions), checkOptions) @@ -118,11 +123,12 @@ export async function assertPack(fixtureName: string, packagerOptions: PackagerO return path.join(outDir, `${platform.buildConfigurationKey}${getArchSuffix(arch == null ? Arch.x64 : arch)}${platform === Platform.MAC ? "" : "-unpacked"}`) } - await checkOptions.packed({ - projectDir: projectDir, - outDir: outDir, - getResources: (platform, arch) => path.join(base(platform, arch), "resources"), - getContent: platform => base(platform), + await checkOptions.packed({ + projectDir: projectDir, + outDir: outDir, + getResources: (platform, arch) => path.join(base(platform, arch), "resources"), + getContent: platform => base(platform), + packager: packager, }) } } @@ -142,7 +148,7 @@ export function getTestAsset(file: string) { return path.join(__dirname, "..", "..", "fixtures", file) } -async function packAndCheck(outDir: string, packagerOptions: PackagerOptions, checkOptions: AssertPackOptions): Promise { +async function packAndCheck(outDir: string, packagerOptions: PackagerOptions, checkOptions: AssertPackOptions): Promise { const packager = new Packager(packagerOptions) const artifacts: Map> = new Map() @@ -159,7 +165,7 @@ async function packAndCheck(outDir: string, packagerOptions: PackagerOptions, ch const platformToTarget = await packager.build() if (packagerOptions.platformPackagerFactory != null || packagerOptions.effectiveOptionComputed != null) { - return + return packager } c: for (let [platform, archToType] of packagerOptions.targets) { @@ -180,6 +186,8 @@ async function packAndCheck(outDir: string, packagerOptions: PackagerOptions, ch } } } + + return packager } async function checkLinuxResult(outDir: string, packager: Packager, checkOptions: AssertPackOptions, artifacts: Array, arch: Arch, nameToTarget: Map) { @@ -221,9 +229,9 @@ async function checkLinuxResult(outDir: string, packager: Packager, checkOptions })) const packageFile = `${outDir}/TestApp_${appInfo.version}_${arch === Arch.ia32 ? "ia32" : (arch === Arch.x64 ? "amd64" : "armv7l")}.deb` - assertThat(await getContents(packageFile)).isEqualTo(expectedContents) + expect(await getContents(packageFile)).toEqual(expectedContents) if (arch === Arch.ia32) { - assertThat(await getContents(`${outDir}/TestApp_${appInfo.version}_i386.deb`)).isEqualTo(expectedContents) + expect(await getContents(`${outDir}/TestApp_${appInfo.version}_i386.deb`)).toEqual(expectedContents) } assertThat(parseDebControl(await exec("dpkg", ["--info", packageFile]))).hasProperties({ @@ -270,20 +278,20 @@ async function checkOsXResult(packager: Packager, packagerOptions: PackagerOptio if (packagerOptions.cscLink != null) { const result = await exec("codesign", ["--verify", packedAppDir]) - assertThat(result).doesNotMatch(/is not signed at all/) + expect(result).not.toMatch(/is not signed at all/) } const actualFiles = artifacts.map(it => path.basename(it.file)).sort() if (checkOptions != null && checkOptions.expectedContents != null) { - assertThat(actualFiles).isEqualTo(checkOptions.expectedContents) + expect(actualFiles).toEqual(checkOptions.expectedContents) } else { - assertThat(actualFiles).isEqualTo([ + expect(actualFiles).toEqual([ `${appInfo.productFilename}-${appInfo.version}-mac.zip`, `${appInfo.productFilename}-${appInfo.version}.dmg`, ].sort()) - assertThat(artifacts.map(it => it.artifactName).sort()).isEqualTo([ + expect(artifacts.map(it => it.artifactName).sort()).toEqual([ `TestApp-${appInfo.version}-mac.zip`, `TestApp-${appInfo.version}.dmg`, ].sort()) @@ -339,7 +347,7 @@ async function checkWindowsResult(packager: Packager, checkOptions: AssertPackOp // console.log(JSON.stringify(files, null, 2)) const expectedContents = checkOptions == null || checkOptions.expectedContents == null ? expectedWinContents : checkOptions.expectedContents - assertThat(files).isEqualTo(pathSorter(expectedContents.map(it => { + expect(files).toEqual(pathSorter(expectedContents.map(it => { if (it === "lib/net45/TestApp.exe") { if (appInfo.productFilename === "Test App ßW") { return `lib/net45/Test%20App%20%C3%9FW.exe` @@ -357,7 +365,7 @@ async function checkWindowsResult(packager: Packager, checkOptions: AssertPackOp }) const expectedSpec = (await readFile(path.join(path.dirname(packageFile), "TestApp.nuspec"), "utf8")).replace(/\r\n/g, "\n") // console.log(expectedSpec) - assertThat(expectedSpec).isEqualTo(` + expect(expectedSpec).toEqual(` TestApp @@ -414,9 +422,7 @@ export function signed(packagerOptions: PackagerOptions): PackagerOptions { export function getPossiblePlatforms(type?: string): Map> { const platforms = [Platform.fromString(process.platform)] if (process.platform === Platform.MAC.nodeName) { - if (process.env.LINUX_SKIP == null) { - platforms.push(Platform.LINUX) - } + platforms.push(Platform.LINUX) if (process.env.CI == null) { platforms.push(Platform.WINDOWS) } diff --git a/test/src/helpers/runTests.ts b/test/src/helpers/runTests.ts index b8eb6fec65f..9dc6326c160 100755 --- a/test/src/helpers/runTests.ts +++ b/test/src/helpers/runTests.ts @@ -1,18 +1,15 @@ import * as path from "path" import BluebirdPromise from "bluebird-lst-c" import { emptyDir, readdir, unlink, removeSync } from "fs-extra-p" -import { cpus, homedir } from "os" +import { homedir } from "os" import { TEST_DIR, ELECTRON_VERSION } from "./config" // we set NODE_PATH in this file, so, we cannot use 'out/awaiter' path here const util = require("../../../out/util/util") -const utilSpawn = util.spawn const isEmptyOrSpaces = util.isEmptyOrSpaces const downloadElectron: (options: any) => Promise = BluebirdPromise.promisify(require("electron-download")) -const rootDir = path.join(__dirname, "..", "..", "..") - async function main() { const testDir = TEST_DIR await BluebirdPromise.all([ @@ -21,15 +18,12 @@ async function main() { emptyDir(testDir), ]) - process.on("SIGINT", () => { - removeSync(testDir) - }) - try { - await runTests() - } - finally { + const exitHandler = () => { removeSync(testDir) } + process.on("SIGINT", exitHandler) + process.on("exit", exitHandler) + runTests() } main() @@ -88,23 +82,16 @@ function downloadAllRequiredElectronVersions(): Promise { /** * CIRCLE_NODE_INDEX=2 — test nodejs 4 (on Circle). */ -function runTests(): BluebirdPromise { - const args: Array = [] - const testFiles = process.env.TEST_FILES - - args.push(`--concurrency=${cpus().length}`) - - if (process.env.FAIL_FAST === "true") { - args.push("--fail-fast") - } +function runTests() { + const testFiles: string | null = process.env.TEST_FILES + const args = [] const baseDir = path.join("test", "out") const baseForLinuxTests = [path.join(baseDir, "ArtifactPublisherTest.js"), path.join(baseDir, "httpRequestTest.js"), path.join(baseDir, "RepoSlugTest.js")] let skipWin = false if (!isEmptyOrSpaces(testFiles)) { - args.push(...testFiles.split(",").map((it: string) => path.join(baseDir, it.trim() + ".js"))) + args.push(...testFiles.split(",").map(it => path.join(baseDir, `${it.trim()}.js`))) if (process.platform === "linux") { - // test it only on Linux in any case args.push(...baseForLinuxTests) } } @@ -120,23 +107,18 @@ function runTests(): BluebirdPromise { } console.log(`Test files for node ${circleNodeIndex}: ${args.join(", ")}`) } - else if (process.platform === "win32") { - args.push("test/out/*.js", "!test/out/macPackagerTest.js", "!test/out/linuxPackagerTest.js", "!test/out/CodeSignTest.js", "!test/out/ArtifactPublisherTest.js", "!test/out/httpRequestTest.js") - } - else if (!util.isCi()) { - args.push("test/out/*.js", "!test/out/httpRequestTest.js") - } - console.log(args) - return utilSpawn(path.join(rootDir, "node_modules", ".bin", "ava"), args, { - cwd: rootDir, - env: Object.assign({}, process.env, { - NODE_PATH: rootDir, - SKIP_WIN: skipWin, - CSC_IDENTITY_AUTO_DISCOVERY: "false", - TEST_DIR: TEST_DIR, - }), - shell: process.platform === "win32", - stdio: "inherit" + process.env.SKIP_WIN = skipWin + process.env.CSC_IDENTITY_AUTO_DISCOVERY = "false" + process.env.TEST_DIR = TEST_DIR + + const rootDir = path.join(__dirname, "..", "..", "..") + require("jest-cli").runCLI({ + bail: process.env.TEST_BAIL === "true", + runInBand: process.env.RUN_IN_BAND === "true", + testPathPattern: args.length > 0 ? args.join("|") : null, + }, rootDir, (result: any) => { + const code = !result || result.success ? 0 : 1 + process.on("exit", () => process.exit(code)) }) } diff --git a/test/src/httpRequestTest.ts b/test/src/httpRequestTest.ts index ae63a06339b..3f9b30f537f 100644 --- a/test/src/httpRequestTest.ts +++ b/test/src/httpRequestTest.ts @@ -1,12 +1,11 @@ -import test from "./helpers/avaEx" import { download } from "out/util/httpRequest" import { tmpdir } from "os" import { randomBytes } from "crypto" import { assertThat } from "./helpers/fileAssert" import * as path from "path" -test("download to nonexistent dir", () => { +test.ifDevOrLinuxCi("download to nonexistent dir", async () => { const tempFile = path.join(tmpdir(), `${process.pid}-${randomBytes(8).toString("hex")}`, Date.now().toString(), "foo.txt") - return download("https://drive.google.com/uc?export=download&id=0Bz3JwZ-jqfRONTkzTGlsMkM2TlE", tempFile) - .then(() => assertThat(tempFile).isFile()) + await download("https://drive.google.com/uc?export=download&id=0Bz3JwZ-jqfRONTkzTGlsMkM2TlE", tempFile) + await assertThat(tempFile).isFile() }) \ No newline at end of file diff --git a/test/src/linuxPackagerTest.ts b/test/src/linuxPackagerTest.ts index 9a293dc7357..fe908f4aeb8 100755 --- a/test/src/linuxPackagerTest.ts +++ b/test/src/linuxPackagerTest.ts @@ -1,4 +1,3 @@ -import test from "./helpers/avaEx" import { modifyPackageJson, app, appThrows } from "./helpers/packTester" import { remove } from "fs-extra-p" import * as path from "path" diff --git a/test/src/macPackagerTest.ts b/test/src/macPackagerTest.ts index f0b20c54b5f..fa3a8ceea9a 100644 --- a/test/src/macPackagerTest.ts +++ b/test/src/macPackagerTest.ts @@ -1,4 +1,3 @@ -import test from "./helpers/avaEx" import { assertPack, platform, modifyPackageJson, signed, app, appThrows } from "./helpers/packTester" import OsXPackager from "out/macPackager" import { writeFile, remove, copy, mkdir } from "fs-extra-p" @@ -17,9 +16,9 @@ import { getTempName } from "out/util/util" import { exec } from "out/util/util" import { MacOsTargetName } from "out/options/macOptions" -test.ifOsx("two-package", () => assertPack("test-app", {targets: createTargets([Platform.MAC], null, "all")}, {signed: true, useTempDir: true})) +test.ifMac("two-package", () => assertPack("test-app", {targets: createTargets([Platform.MAC], null, "all")}, {signed: true, useTempDir: true})) -test.ifOsx("one-package", app(platform(Platform.MAC), {signed: true})) +test.ifMac("one-package", app(platform(Platform.MAC), {signed: true})) function createTargetTest(target: Array, expectedContents: Array) { return app({ @@ -50,23 +49,23 @@ function createTargetTest(target: Array, expectedContents: Arra test("only zip", createTargetTest(["zip"], ["Test App ßW-1.1.0-mac.zip"])) -test.ifOsx("pkg", createTargetTest(["pkg"], ["Test App ßW-1.1.0.pkg"])) +test.ifMac("pkg", createTargetTest(["pkg"], ["Test App ßW-1.1.0.pkg"])) test("tar.gz", createTargetTest(["tar.gz"], ["Test App ßW-1.1.0-mac.tar.gz"])) // todo failed on Travis CI //test("tar.xz", createTargetTest(["tar.xz"], ["Test App ßW-1.1.0-mac.tar.xz"])) -test.ifOsx("invalid target", t => t.throws(createTargetTest(["ttt"], [])(), "Unknown target: ttt")) +test.ifMac("invalid target", () => assertThat(createTargetTest(["ttt"], [])()).throws("Unknown target: ttt")) if (process.env.CSC_KEY_PASSWORD == null || process.platform !== "darwin") { console.warn("Skip mas tests because CSC_KEY_PASSWORD is not defined") } else { - test.ifOsx("mas", createTargetTest(["mas"], ["Test App ßW-1.1.0.pkg"])) - test.ifOsx("mas and 7z", createTargetTest(["mas", "7z"], ["Test App ßW-1.1.0-mac.7z", "Test App ßW-1.1.0.pkg"])) + test.ifMac("mas", createTargetTest(["mas"], ["Test App ßW-1.1.0.pkg"])) + test.ifMac("mas and 7z", createTargetTest(["mas", "7z"], ["Test App ßW-1.1.0-mac.7z", "Test App ßW-1.1.0.pkg"])) - test.ifOsx("custom mas", () => { + test.ifMac("custom mas", () => { let platformPackager: CheckingMacPackager = null return assertPack("test-app-one", signed({ targets: Platform.MAC.createTarget(), @@ -93,7 +92,7 @@ else { }) }) - test.ifOsx("entitlements in the package.json", () => { + test.ifMac("entitlements in the package.json", () => { let platformPackager: CheckingMacPackager = null return assertPack("test-app-one", signed({ targets: Platform.MAC.createTarget(), @@ -117,7 +116,7 @@ else { }) }) - test.ifOsx("entitlements in build dir", () => { + test.ifMac("entitlements in build dir", () => { let platformPackager: CheckingMacPackager = null return assertPack("test-app-one", signed({ targets: Platform.MAC.createTarget(), @@ -139,12 +138,12 @@ else { } // test also "only dmg" -test.ifOsx("no background", app({ +test.ifMac("no background", app({ targets: Platform.MAC.createTarget("dmg"), devMetadata: { build: { // dmg can mount only one volume name, so, to test in parallel, we set different product name - productName: "Test ß", + productName: "NoBackground", dmg: { background: null, title: "Foo", @@ -152,15 +151,15 @@ test.ifOsx("no background", app({ } } }, { - expectedContents: ["Test ß-1.1.0.dmg"], + expectedContents: ["NoBackground-1.1.0.dmg"], packed: (context) => { - return attachAndExecute(path.join(context.outDir, "mac/Test ß-1.1.0.dmg"), false, () => { - return assertThat(path.join("/Volumes/Test ß 1.1.0/.background")).doesNotExist() + return attachAndExecute(path.join(context.outDir, "mac/NoBackground-1.1.0.dmg"), false, () => { + return assertThat(path.join("/Volumes/NoBackground 1.1.0/.background")).doesNotExist() }) } })) -test.ifOsx("unset dmg icon", app({ +test.ifMac("unset dmg icon", app({ targets: Platform.MAC.createTarget("dmg"), devMetadata: { build: { @@ -183,11 +182,20 @@ test.ifOsx("unset dmg icon", app({ } })) -test.ifOsx("no build directory", app(platform(Platform.MAC), { +test.ifMac("no build directory", app({ + targets: Platform.MAC.createTarget("dmg"), + devMetadata: { + build: { + // dmg can mount only one volume name, so, to test in parallel, we set different product name + productName: "NoBuildDirectory", + } + } +}, { + expectedContents: ["NoBuildDirectory-1.1.0.dmg"], projectDirCreated: projectDir => remove(path.join(projectDir, "build")) })) -test.ifOsx("custom background - new way", () => { +test.ifMac("custom background - new way", () => { let platformPackager: CheckingMacPackager = null const customBackground = "customBackground.png" return assertPack("test-app-one", { @@ -208,14 +216,14 @@ test.ifOsx("custom background - new way", () => { }) ]), packed: async context => { - assertThat(platformPackager.effectiveDistOptions.background).isEqualTo(customBackground) - assertThat(platformPackager.effectiveDistOptions.icon).isEqualTo("foo.icns") - assertThat(await platformPackager.getIconPath()).isEqualTo(path.join(context.projectDir, "customIcon.icns")) + expect(platformPackager.effectiveDistOptions.background).toEqual(customBackground) + expect(platformPackager.effectiveDistOptions.icon).toEqual("foo.icns") + expect(await platformPackager.getIconPath()).toEqual(path.join(context.projectDir, "customIcon.icns")) }, }) }) -test.ifOsx("disable dmg icon (light), bundleVersion", () => { +test.ifMac("disable dmg icon (light), bundleVersion", () => { let platformPackager: CheckingMacPackager = null return assertPack("test-app-one", { targets: Platform.MAC.createTarget(), @@ -232,14 +240,14 @@ test.ifOsx("disable dmg icon (light), bundleVersion", () => { } }, { packed: async () => { - assertThat(platformPackager.effectiveDistOptions.icon).isEqualTo(null) - assertThat(await platformPackager.getIconPath()).isNotEqualTo(null) - assertThat(platformPackager.appInfo.buildVersion).isEqualTo("50") + expect(platformPackager.effectiveDistOptions.icon).toBeNull() + expect(await platformPackager.getIconPath()).not.toBeNull() + expect(platformPackager.appInfo.buildVersion).toEqual("50") }, }) }) -test.ifOsx("electronDist", appThrows(/ENOENT: no such file or directory/, { +test.ifMac("electronDist", appThrows(/ENOENT: no such file or directory/, { targets: Platform.OSX.createTarget(DIR_TARGET), }, { projectDirCreated: projectDir => modifyPackageJson(projectDir, data => { @@ -247,6 +255,8 @@ test.ifOsx("electronDist", appThrows(/ENOENT: no such file or directory/, { }) })) +test.ifWinCi("Build macOS on Windows is not supported", appThrows(/Build for macOS is supported only on macOS.+/, platform(Platform.MAC))) + class CheckingMacPackager extends OsXPackager { effectiveDistOptions: any effectiveSignOptions: SignOptions diff --git a/test/src/nsisTest.ts b/test/src/nsisTest.ts index 6202d175fa9..c64a2fff8de 100644 --- a/test/src/nsisTest.ts +++ b/test/src/nsisTest.ts @@ -1,5 +1,4 @@ import { Platform, Arch } from "out" -import test from "./helpers/avaEx" import { assertPack, getTestAsset, app } from "./helpers/packTester" import { copy, outputFile, readFile } from "fs-extra-p" import * as path from "path" @@ -113,8 +112,8 @@ async function doTest(outDir: string, perUser: boolean) { let fsAfter = await listFiles() let fsChanges = diff(fsBefore, fsAfter, driveC) - assertThat(fsChanges.added).isEqualTo(nsisPerMachineInstall) - assertThat(fsChanges.deleted).isEqualTo([]) + expect(fsChanges.added).toEqual(nsisPerMachineInstall) + expect(fsChanges.deleted).toEqual([]) // run installer again to test uninstall const appDataFile = path.join(wine.userDir, "Application Data", "TestApp", "doNotDeleteMe") @@ -124,8 +123,8 @@ async function doTest(outDir: string, perUser: boolean) { fsAfter = await listFiles() fsChanges = diff(fsBefore, fsAfter, driveC) - assertThat(fsChanges.added).isEqualTo([]) - assertThat(fsChanges.deleted).isEqualTo([]) + expect(fsChanges.added).toEqual([]) + expect(fsChanges.deleted).toEqual([]) await assertThat(appDataFile).isFile() @@ -133,7 +132,7 @@ async function doTest(outDir: string, perUser: boolean) { await assertThat(appDataFile).doesNotExist() } -test.ifNotCiOsx("boring", app({ +test.ifNotCiMac("boring", app({ targets: nsisTarget, devMetadata: { build: { @@ -153,7 +152,7 @@ test.ifNotCiOsx("boring", app({ }, })) -test.ifNotCiOsx("boring, only perMachine", app({ +test.ifNotCiMac("boring, only perMachine", app({ targets: nsisTarget, devMetadata: { build: { @@ -165,13 +164,13 @@ test.ifNotCiOsx("boring, only perMachine", app({ } })) -test.ifNotCiOsx("installerHeaderIcon", () => { +test.ifNotCiMac("installerHeaderIcon", () => { let headerIconPath: string | null = null return assertPack("test-app-one", { targets: nsisTarget, effectiveOptionComputed: options => { const defines = options[0] - assertThat(defines.HEADER_ICO).isEqualTo(headerIconPath) + expect(defines.HEADER_ICO).toEqual(headerIconPath) return false } }, { @@ -183,7 +182,7 @@ test.ifNotCiOsx("installerHeaderIcon", () => { ) }) -test.ifNotCiOsx("boring, MUI_HEADER", () => { +test.ifNotCiMac("boring, MUI_HEADER", () => { let installerHeaderPath: string | null = null return assertPack("test-app-one", { targets: nsisTarget, @@ -196,9 +195,9 @@ test.ifNotCiOsx("boring, MUI_HEADER", () => { }, effectiveOptionComputed: options => { const defines = options[0] - assertThat(defines.MUI_HEADERIMAGE).isEqualTo(null) - assertThat(defines.MUI_HEADERIMAGE_BITMAP).isEqualTo(installerHeaderPath) - assertThat(defines.MUI_HEADERIMAGE_RIGHT).isEqualTo(null) + expect(defines.MUI_HEADERIMAGE).toBeNull() + expect(defines.MUI_HEADERIMAGE_BITMAP).toEqual(installerHeaderPath) + expect(defines.MUI_HEADERIMAGE_RIGHT).toBeNull() // speedup, do not build - another MUI_HEADER test will test build return true } @@ -211,7 +210,7 @@ test.ifNotCiOsx("boring, MUI_HEADER", () => { ) }) -test.ifNotCiOsx("boring, MUI_HEADER as option", () => { +test.ifNotCiMac("boring, MUI_HEADER as option", () => { let installerHeaderPath: string | null = null return assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget(["nsis"], Arch.ia32, Arch.x64), @@ -225,9 +224,9 @@ test.ifNotCiOsx("boring, MUI_HEADER as option", () => { }, effectiveOptionComputed: options => { const defines = options[0] - assertThat(defines.MUI_HEADERIMAGE).isEqualTo(null) - assertThat(defines.MUI_HEADERIMAGE_BITMAP).isEqualTo(installerHeaderPath) - assertThat(defines.MUI_HEADERIMAGE_RIGHT).isEqualTo(null) + expect(defines.MUI_HEADERIMAGE).toBeNull() + expect(defines.MUI_HEADERIMAGE_BITMAP).toEqual(installerHeaderPath) + expect(defines.MUI_HEADERIMAGE_RIGHT).toBeNull() // test that we can build such installer return false } diff --git a/test/src/nsisUpdaterTest.ts b/test/src/nsisUpdaterTest.ts index 3703112224b..23ed9adf8b7 100644 --- a/test/src/nsisUpdaterTest.ts +++ b/test/src/nsisUpdaterTest.ts @@ -1,4 +1,3 @@ -import test from "./helpers/avaEx" import { assertThat } from "./helpers/fileAssert" import { NsisUpdater } from "out/nsis-auto-updater/src/NsisUpdater" import * as path from "path" @@ -22,24 +21,24 @@ g.__test_app = { }, } -test("check updates - no versions at all", async (t) => { +test("check updates - no versions at all", async () => { const updater: NsisUpdater = new NsisUpdaterClass({ provider: "bintray", owner: "actperepo", package: "no-versions", }) - t.throws(updater.checkForUpdates(), /No latest version, please ensure that/) + await assertThat(updater.checkForUpdates()).throws(/No latest version, please ensure that/) }) -test("cannot find suitable file for version", async (t) => { +test("cannot find suitable file for version", async () => { const updater: NsisUpdater = new NsisUpdaterClass({ provider: "bintray", owner: "actperepo", package: "incorrect-file-version", }) - t.throws(updater.checkForUpdates(), /Cannot find suitable file for version 1.0.0 in/) + await assertThat(updater.checkForUpdates()).throws(/Cannot find suitable file for version 1.0.0 in/) }) test("file url", async () => { @@ -67,7 +66,7 @@ test("file url", async () => { }) await assertThat(path.join(await updateCheckResult.downloadPromise)).isFile() - assertThat(actualEvents).isEqualTo(expectedEvents) + expect(actualEvents).toEqual(expectedEvents) }) test("file url generic", async () => { @@ -94,7 +93,7 @@ test("file url generic", async () => { }) await assertThat(path.join(await updateCheckResult.downloadPromise)).isFile() - assertThat(actualEvents).isEqualTo(expectedEvents) + expect(actualEvents).toEqual(expectedEvents) }) test("file url github", async () => { @@ -122,10 +121,10 @@ test("file url github", async () => { }) await assertThat(path.join(await updateCheckResult.downloadPromise)).isFile() - assertThat(actualEvents).isEqualTo(expectedEvents) + expect(actualEvents).toEqual(expectedEvents) }) -test("test error", async (t) => { +test("test error", async () => { const updater: NsisUpdater = new NsisUpdaterClass() const actualEvents: Array = [] @@ -136,11 +135,11 @@ test("test error", async (t) => { }) } - t.throws(updater.checkForUpdates(), "Path must be a string. Received undefined") + await assertThat(updater.checkForUpdates()).throws("Path must be a string. Received undefined") await new BluebirdPromise(function (resolve, reject) { setTimeout(() => { try { - assertThat(actualEvents).isEqualTo(expectedEvents) + expect(actualEvents).toEqual(expectedEvents) } catch (e) { reject(e) diff --git a/test/src/winPackagerTest.ts b/test/src/winPackagerTest.ts index b57e3936b32..6d018c64ea3 100755 --- a/test/src/winPackagerTest.ts +++ b/test/src/winPackagerTest.ts @@ -1,16 +1,14 @@ import { Platform, Arch, BuildInfo } from "out" -import test from "./helpers/avaEx" -import { assertPack, platform, modifyPackageJson, getTestAsset, app } from "./helpers/packTester" +import { assertPack, platform, modifyPackageJson, getTestAsset, app, appThrows } from "./helpers/packTester" import { outputFile, rename, copy } from "fs-extra-p" import * as path from "path" import { WinPackager } from "out/winPackager" import BluebirdPromise from "bluebird-lst-c" -import { assertThat } from "./helpers/fileAssert" import { SignOptions } from "out/windowsCodeSign" import SquirrelWindowsTarget from "out/targets/squirrelWindows" import { Target } from "out/platformPackager" -test.ifNotCiOsx("win", app({targets: Platform.WINDOWS.createTarget(["squirrel", "zip"])}, {signed: true})) +test.ifNotCiMac("win", app({targets: Platform.WINDOWS.createTarget(["squirrel", "zip"])}, {signed: true})) // very slow test.skip("delta and msi", app({ @@ -32,22 +30,14 @@ test.ifDevOrWinCi("beta version", app({ } })) -test.ifDevOrWinCi("beta version", app({ - targets: Platform.WINDOWS.createTarget(["squirrel", "nsis"]), - devMetadata: { - version: "3.0.0-beta.2", - } +test.ifNotCiMac("msi as string", () => appThrows(/msi expected to be boolean value, but string '"false"' was specified/, {targets: Platform.WINDOWS.createTarget("squirrel")}, { + projectDirCreated: it => modifyPackageJson(it, data => { + data.build.win = { + msi: "false", + } + }) })) -test.ifNotCiOsx("msi as string", t => t.throws(assertPack("test-app-one", {targets: Platform.WINDOWS.createTarget("squirrel")}, { - projectDirCreated: it => modifyPackageJson(it, data => { - data.build.win = { - msi: "false", - } - }) - }), `msi expected to be boolean value, but string '"false"' was specified`) -) - test("detect install-spinner, certificateFile/password", () => { let platformPackager: CheckingWinPackager = null let loadingGifPath: string = null @@ -75,22 +65,22 @@ test("detect install-spinner, certificateFile/password", () => { })]) }, packed: async () => { - assertThat(platformPackager.effectiveDistOptions.loadingGif).isEqualTo(loadingGifPath) - assertThat(platformPackager.signOptions.cert).isEqualTo("secretFile") - assertThat(platformPackager.signOptions.password).isEqualTo("pass") + expect(platformPackager.effectiveDistOptions.loadingGif).toEqual(loadingGifPath) + expect(platformPackager.signOptions.cert).toEqual("secretFile") + expect(platformPackager.signOptions.password).toEqual("pass") }, }) }) -test.ifNotCiOsx("icon < 256", t => t.throws(assertPack("test-app-one", platform(Platform.WINDOWS), { +test.ifNotCiMac("icon < 256", t => appThrows(/Windows icon size must be at least 256x256, please fix ".+/, platform(Platform.WINDOWS), { projectDirCreated: projectDir => rename(path.join(projectDir, "build", "incorrect.ico"), path.join(projectDir, "build", "icon.ico")) -}), /Windows icon size must be at least 256x256, please fix ".+/)) +})) -test.ifNotCiOsx("icon not an image", t => t.throws(assertPack("test-app-one", platform(Platform.WINDOWS), { +test.ifNotCiMac("icon not an image", appThrows(/Windows icon is not valid ico file, please fix ".+/, platform(Platform.WINDOWS), { projectDirCreated: projectDir => outputFile(path.join(projectDir, "build", "icon.ico"), "foo") -}), /Windows icon is not valid ico file, please fix ".+/)) +})) -test.ifOsx("custom icon", () => { +test.ifMac("custom icon", () => { let platformPackager: CheckingWinPackager = null return assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget("squirrel"), @@ -105,12 +95,12 @@ test.ifOsx("custom icon", () => { }) ]), packed: async context => { - assertThat(await platformPackager.getIconPath()).isEqualTo(path.join(context.projectDir, "customIcon.ico")) + expect(await platformPackager.getIconPath()).toEqual(path.join(context.projectDir, "customIcon.ico")) }, }) }) -test.ifNotWindows("ev", t => t.throws(assertPack("test-app-one", { +it.ifNotWindows("ev", () => appThrows(/certificateSubjectName supported only on Windows/, { targets: Platform.WINDOWS.createTarget(["dir"]), devMetadata: { build: { @@ -119,7 +109,7 @@ test.ifNotWindows("ev", t => t.throws(assertPack("test-app-one", { } } } -}), /certificateSubjectName supported only on Windows/)) +})) class CheckingWinPackager extends WinPackager { effectiveDistOptions: any diff --git a/test/tsconfig.json b/test/tsconfig.json index 0529b7d5a61..db8991fa48d 100755 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -23,7 +23,6 @@ "../typings/*.d.ts", "typings/*.d.ts", "src/**/*.ts", - "../node_modules/ava-tf/types/generated.d.ts", "../node_modules/fs-extra-p/index.d.ts", "../node_modules/bluebird-lst-c/index.d.ts", "../node_modules/electron-macos-sign/index.d.ts", diff --git a/test/typings/jest-ex.d.ts b/test/typings/jest-ex.d.ts new file mode 100644 index 00000000000..85d51b3a101 --- /dev/null +++ b/test/typings/jest-ex.d.ts @@ -0,0 +1,12 @@ +declare module jest { + interface It { + ifNotWindows: jest.It + ifMac: jest.It + ifNotCi: jest.It + ifCi: jest.It + ifNotCiMac: jest.It + ifDevOrWinCi: jest.It + ifWinCi: jest.It + ifDevOrLinuxCi: jest.It + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 3e43def67e0..2adaabd4167 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -34,7 +34,10 @@ "include": [ "src/**/*.ts", "typings/*.d.ts", - "node_modules/@types/**/*.d.ts" + "node_modules/@types/ini/*.d.ts", + "node_modules/@types/js-yaml/*.d.ts", + "node_modules/@types/node/*.d.ts", + "node_modules/@types/source-map-support/*.d.ts" ], "exclude": [ ] diff --git a/yarn.lock b/yarn.lock index 9c6450f130f..1a15a587ac8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -58,13 +58,17 @@ version "1.3.29" resolved "https://registry.yarnpkg.com/@types/ini/-/ini-1.3.29.tgz#1325e981e047d40d13ce0359b821475b97741d2f" +"@types/jest@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-16.0.0.tgz#5fe49adee6db194357a52438c0d80695b59a45e9" + "@types/js-yaml@^3.5.28": version "3.5.28" resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.5.28.tgz#efd7614f8eb1b924c41235ff653b7370da467fac" "@types/node@*": - version "6.0.47" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.47.tgz#07dd004f05d0b74344ebf943b559659bd7f445b1" + version "6.0.48" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.48.tgz#86ccc15f66b73cbbc5eb3483398936c585122b3c" "@types/source-map-support@^0.2.28": version "0.2.28" @@ -79,10 +83,24 @@ JSONStream@^1.0.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abbrev@1: +abab@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" + +abbrev@1, abbrev@1.0.x: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" +acorn-globals@^1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" + dependencies: + acorn "^2.1.0" + +acorn@^2.1.0, acorn@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + agent-base@2: version "2.0.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e" @@ -120,16 +138,13 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" +ansicolors@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" -anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" - dependencies: - arrify "^1.0.0" - micromatch "^2.1.5" +append-transform@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.3.0.tgz#d6933ce4a85f09445d9ccc4cc119051b7381a813" aproba@^1.0.3: version "1.0.4" @@ -178,10 +193,6 @@ arr-diff@^2.0.0: dependencies: arr-flatten "^1.0.1" -arr-exclude@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631" - arr-flatten@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" @@ -190,6 +201,10 @@ array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -198,13 +213,13 @@ array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" -array-union@^1.0.1, array-union@^1.0.2: +array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" dependencies: array-uniq "^1.0.1" -array-uniq@^1.0.1, array-uniq@^1.0.3: +array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -242,11 +257,7 @@ assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async@^1.4.0: +async@1.x, async@^1.4.0, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -264,113 +275,6 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" -auto-bind@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-0.1.0.tgz#7a29efc8c2388d3d578e02fc2df531c81ffc1ee1" - -ava-files@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ava-files/-/ava-files-0.2.0.tgz#c7b8b6e2e0cea63b57a6e27e0db145c7c19cfe20" - dependencies: - auto-bind "^0.1.0" - bluebird "^3.4.1" - globby "^6.0.0" - ignore-by-default "^1.0.1" - lodash.flatten "^4.2.0" - multimatch "^2.1.0" - slash "^1.0.0" - -ava-init@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.1.6.tgz#ef19ed0b24b6bf359dad6fbadf1a05d836395c91" - dependencies: - arr-exclude "^1.0.0" - cross-spawn "^4.0.0" - pinkie-promise "^2.0.0" - read-pkg-up "^1.0.1" - the-argv "^1.0.0" - write-pkg "^1.0.0" - -ava-tf@^0.16.4: - version "0.16.4" - resolved "https://registry.yarnpkg.com/ava-tf/-/ava-tf-0.16.4.tgz#5bb9d054bb17ca588dd8ffa5df4b15e3df55fa18" - dependencies: - arr-flatten "^1.0.1" - array-union "^1.0.2" - array-uniq "^1.0.3" - arrify "^1.0.1" - auto-bind "^0.1.0" - ava-files "^0.2.0" - ava-init "^0.1.6" - babel-code-frame "^6.16.0" - babel-core "^6.17.0" - babel-plugin-ava-throws-helper "^0.1.0" - babel-plugin-detective "^2.0.0" - babel-plugin-espower "^2.3.1" - babel-plugin-transform-runtime "^6.15.0" - babel-preset-es2015 "^6.16.0" - babel-preset-es2015-node4 "^2.1.0" - babel-preset-stage-2 "^6.17.0" - babel-runtime "^6.11.6" - bluebird "^3.4.6" - caching-transform "^1.0.1" - chalk "^1.1.3" - chokidar "^1.6.1" - clean-yaml-object "^0.1.0" - cli-cursor "^1.0.2" - cli-spinners "^0.3.0" - cli-truncate "^0.2.1" - co-with-promise "^4.6.0" - common-path-prefix "^1.0.0" - convert-source-map "^1.3.0" - core-assert "^0.2.1" - currently-unhandled "^0.4.1" - debug "^2.2.0" - empower-core "^0.6.1" - figures "^1.7.0" - find-cache-dir "^0.1.1" - fn-name "^2.0.1" - get-port "^2.1.0" - has-flag "^2.0.0" - ignore-by-default "^1.0.1" - is-ci "^1.0.9" - is-generator-fn "^1.0.0" - is-obj "^1.0.1" - is-observable "^0.2.0" - is-promise "^2.1.0" - last-line-stream "^1.0.0" - lodash.debounce "^4.0.8" - lodash.difference "^4.5.0" - lodash.isequal "^4.4.0" - loud-rejection "^1.6.0" - matcher "^0.1.2" - max-timeout "^1.0.0" - md5-hex "^1.3.0" - meow "^3.7.0" - ms "^0.7.1" - object-assign "^4.1.0" - observable-to-promise "^0.4.0" - option-chain "^0.1.1" - package-hash "^1.2.0" - pkg-conf "^2.0.0" - plur "^2.1.2" - power-assert-context-formatter "^1.1.0" - power-assert-renderer-assertion "^1.1.0" - power-assert-renderer-succinct "^1.1.0" - pretty-ms "^2.1.0" - repeating "^3.0.0" - require-precompiled "^0.1.0" - resolve-cwd "^1.0.0" - semver "^5.3.0" - set-immediate-shim "^1.0.1" - source-map-support "^0.4.4" - stack-utils "^0.4.0" - strip-ansi "^3.0.1" - strip-bom "^3.0.0" - time-require "^0.1.2" - unique-temp-dir "^1.0.0" - update-notifier "^1.0.2" - aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" @@ -387,7 +291,7 @@ babel-code-frame@^6.16.0: esutils "^2.0.2" js-tokens "^2.0.0" -babel-core@^6.17.0, babel-core@^6.18.0, babel-core@^6.18.2: +babel-core@^6.0.0, babel-core@^6.18.0, babel-core@^6.18.2: version "6.18.2" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.18.2.tgz#d8bb14dd6986fa4f3566a26ceda3964fa0e04e5b" dependencies: @@ -411,34 +315,18 @@ babel-core@^6.17.0, babel-core@^6.18.0, babel-core@^6.18.2: slash "^1.0.0" source-map "^0.5.0" -babel-generator@^6.1.0, babel-generator@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.18.0.tgz#e4f104cb3063996d9850556a45aae4a022060a07" +babel-generator@^6.18.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.19.0.tgz#9b2f244204777a3d6810ec127c673c87b349fac5" dependencies: babel-messages "^6.8.0" babel-runtime "^6.9.0" - babel-types "^6.18.0" + babel-types "^6.19.0" detect-indent "^4.0.0" jsesc "^1.3.0" lodash "^4.2.0" source-map "^0.5.0" -babel-helper-bindify-decorators@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.18.0.tgz#fc00c573676a6e702fffa00019580892ec8780a5" - dependencies: - babel-runtime "^6.0.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - -babel-helper-builder-binary-assignment-operator-visitor@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.18.0.tgz#8ae814989f7a53682152e3401a04fabd0bb333a6" - dependencies: - babel-helper-explode-assignable-expression "^6.18.0" - babel-runtime "^6.0.0" - babel-types "^6.18.0" - babel-helper-call-delegate@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.18.0.tgz#05b14aafa430884b034097ef29e9f067ea4133bd" @@ -448,33 +336,7 @@ babel-helper-call-delegate@^6.18.0: babel-traverse "^6.18.0" babel-types "^6.18.0" -babel-helper-define-map@^6.18.0, babel-helper-define-map@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.18.0.tgz#8d6c85dc7fbb4c19be3de40474d18e97c3676ec2" - dependencies: - babel-helper-function-name "^6.18.0" - babel-runtime "^6.9.0" - babel-types "^6.18.0" - lodash "^4.2.0" - -babel-helper-explode-assignable-expression@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.18.0.tgz#14b8e8c2d03ad735d4b20f1840b24cd1f65239fe" - dependencies: - babel-runtime "^6.0.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - -babel-helper-explode-class@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.18.0.tgz#c44f76f4fa23b9c5d607cbac5d4115e7a76f62cb" - dependencies: - babel-helper-bindify-decorators "^6.18.0" - babel-runtime "^6.0.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - -babel-helper-function-name@^6.18.0, babel-helper-function-name@^6.8.0: +babel-helper-function-name@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.18.0.tgz#68ec71aeba1f3e28b2a6f0730190b754a9bf30e6" dependencies: @@ -498,22 +360,7 @@ babel-helper-hoist-variables@^6.18.0: babel-runtime "^6.0.0" babel-types "^6.18.0" -babel-helper-optimise-call-expression@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.18.0.tgz#9261d0299ee1a4f08a6dd28b7b7c777348fd8f0f" - dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" - -babel-helper-regex@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.18.0.tgz#ae0ebfd77de86cb2f1af258e2cc20b5fe893ecc6" - dependencies: - babel-runtime "^6.9.0" - babel-types "^6.18.0" - lodash "^4.2.0" - -babel-helper-remap-async-to-generator@^6.16.0, babel-helper-remap-async-to-generator@^6.16.2: +babel-helper-remap-async-to-generator@^6.16.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.18.0.tgz#336cdf3cab650bb191b02fc16a3708e7be7f9ce5" dependencies: @@ -523,17 +370,6 @@ babel-helper-remap-async-to-generator@^6.16.0, babel-helper-remap-async-to-gener babel-traverse "^6.18.0" babel-types "^6.18.0" -babel-helper-replace-supers@^6.18.0, babel-helper-replace-supers@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.18.0.tgz#28ec69877be4144dbd64f4cc3a337e89f29a924e" - dependencies: - babel-helper-optimise-call-expression "^6.18.0" - babel-messages "^6.8.0" - babel-runtime "^6.0.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babel-helpers@^6.16.0: version "6.16.0" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3" @@ -541,6 +377,14 @@ babel-helpers@^6.16.0: babel-runtime "^6.0.0" babel-template "^6.16.0" +babel-jest@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-17.0.2.tgz#8d51e0d03759713c331f108eb0b2eaa4c6efff74" + dependencies: + babel-core "^6.0.0" + babel-plugin-istanbul "^2.0.0" + babel-preset-jest "^17.0.2" + babel-messages@^6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9" @@ -551,83 +395,23 @@ babel-plugin-array-includes@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/babel-plugin-array-includes/-/babel-plugin-array-includes-2.0.3.tgz#cf5452e81c7b803fb7959f1045ac88e2ec28ff76" -babel-plugin-ava-throws-helper@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-ava-throws-helper/-/babel-plugin-ava-throws-helper-0.1.0.tgz#951107708a12208026bf8ca4cef18a87bc9b0cfe" - dependencies: - babel-template "^6.7.0" - babel-types "^6.7.2" - -babel-plugin-check-es2015-constants@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.8.0.tgz#dbf024c32ed37bfda8dee1e76da02386a8d26fe7" +babel-plugin-istanbul@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-2.0.3.tgz#266b304b9109607d60748474394676982f660df4" dependencies: - babel-runtime "^6.0.0" - -babel-plugin-detective@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-detective/-/babel-plugin-detective-2.0.0.tgz#6e642e83c22a335279754ebe2d754d2635f49f13" + find-up "^1.1.2" + istanbul-lib-instrument "^1.1.4" + object-assign "^4.1.0" + test-exclude "^2.1.1" -babel-plugin-espower@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-2.3.1.tgz#d15e904bc9949b14ac233b7965c2a5dc7a19a6a9" - dependencies: - babel-generator "^6.1.0" - babylon "^6.1.0" - call-matcher "^1.0.0" - core-js "^2.0.0" - espower-location-detector "^0.1.1" - espurify "^1.6.0" - estraverse "^4.1.1" +babel-plugin-jest-hoist@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-17.0.2.tgz#213488ce825990acd4c30f887dca09fffeb45235" babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" -babel-plugin-syntax-async-generators@^6.5.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - -babel-plugin-syntax-decorators@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.3.13: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.13.0.tgz#2b84b7d53dd744f94ff1fad7669406274b23f541" - -babel-plugin-transform-async-generator-functions@^6.17.0: - version "6.17.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.17.0.tgz#d0b5a2b2f0940f2b245fa20a00519ed7bc6cae54" - dependencies: - babel-helper-remap-async-to-generator "^6.16.2" - babel-plugin-syntax-async-generators "^6.5.0" - babel-runtime "^6.0.0" - -babel-plugin-transform-async-to-generator@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz#19ec36cb1486b59f9f468adfa42ce13908ca2999" - dependencies: - babel-helper-remap-async-to-generator "^6.16.0" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.0.0" - babel-plugin-transform-async-to-module-method@^6.16.0: version "6.16.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-module-method/-/babel-plugin-transform-async-to-module-method-6.16.0.tgz#3c88b4f0c5bf65e7b5960a48731f21ad0fb5a55f" @@ -637,143 +421,13 @@ babel-plugin-transform-async-to-module-method@^6.16.0: babel-runtime "^6.0.0" babel-types "^6.16.0" -babel-plugin-transform-class-properties@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.18.0.tgz#bc1266a39d4c8726e0bd7b15c56235177e6ede57" - dependencies: - babel-helper-function-name "^6.18.0" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.9.1" - -babel-plugin-transform-decorators@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.13.0.tgz#82d65c1470ae83e2d13eebecb0a1c2476d62da9d" - dependencies: - babel-helper-define-map "^6.8.0" - babel-helper-explode-class "^6.8.0" - babel-plugin-syntax-decorators "^6.13.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" - babel-types "^6.13.0" - -babel-plugin-transform-es2015-arrow-functions@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.8.0.tgz#5b63afc3181bdc9a8c4d481b5a4f3f7d7fef3d9d" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.8.0.tgz#ed95d629c4b5a71ae29682b998f70d9833eb366d" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-block-scoping@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.18.0.tgz#3bfdcfec318d46df22525cdea88f1978813653af" - dependencies: - babel-runtime "^6.9.0" - babel-template "^6.15.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - lodash "^4.2.0" - -babel-plugin-transform-es2015-classes@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.18.0.tgz#ffe7a17321bf83e494dcda0ae3fc72df48ffd1d9" +babel-plugin-transform-es2015-destructuring@^6.18.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.19.0.tgz#ff1d911c4b3f4cab621bd66702a869acd1900533" dependencies: - babel-helper-define-map "^6.18.0" - babel-helper-function-name "^6.18.0" - babel-helper-optimise-call-expression "^6.18.0" - babel-helper-replace-supers "^6.18.0" - babel-messages "^6.8.0" babel-runtime "^6.9.0" - babel-template "^6.14.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - -babel-plugin-transform-es2015-computed-properties@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.8.0.tgz#f51010fd61b3bd7b6b60a5fdfd307bb7a5279870" - dependencies: - babel-helper-define-map "^6.8.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" -babel-plugin-transform-es2015-destructuring@^6.18.0, babel-plugin-transform-es2015-destructuring@^6.6.5: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.18.0.tgz#a08fb89415ab82058649558bedb7bf8dafa76ba5" - dependencies: - babel-runtime "^6.9.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.6.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.8.0.tgz#fd8f7f7171fc108cc1c70c3164b9f15a81c25f7d" - dependencies: - babel-runtime "^6.0.0" - babel-types "^6.8.0" - -babel-plugin-transform-es2015-for-of@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.18.0.tgz#4c517504db64bf8cfc119a6b8f177211f2028a70" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-function-name@^6.5.0, babel-plugin-transform-es2015-function-name@^6.9.0: - version "6.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.9.0.tgz#8c135b17dbd064e5bba56ec511baaee2fca82719" - dependencies: - babel-helper-function-name "^6.8.0" - babel-runtime "^6.9.0" - babel-types "^6.9.0" - -babel-plugin-transform-es2015-literals@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.8.0.tgz#50aa2e5c7958fc2ab25d74ec117e0cc98f046468" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-modules-amd@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.18.0.tgz#49a054cbb762bdf9ae2d8a807076cfade6141e40" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" - -babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-es2015-modules-commonjs@^6.7.4: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.18.0.tgz#c15ae5bb11b32a0abdcc98a5837baa4ee8d67bcc" - dependencies: - babel-plugin-transform-strict-mode "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.16.0" - babel-types "^6.18.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.18.0.tgz#f09294707163edae4d3b3e8bfacecd01d920b7ad" - dependencies: - babel-helper-hoist-variables "^6.18.0" - babel-runtime "^6.11.6" - babel-template "^6.14.0" - -babel-plugin-transform-es2015-modules-umd@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.18.0.tgz#23351770ece5c1f8e83ed67cb1d7992884491e50" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" - -babel-plugin-transform-es2015-object-super@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.8.0.tgz#1b858740a5a4400887c23dcff6f4d56eea4a24c5" - dependencies: - babel-helper-replace-supers "^6.8.0" - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-parameters@^6.18.0, babel-plugin-transform-es2015-parameters@^6.7.0: +babel-plugin-transform-es2015-parameters@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.18.0.tgz#9b2cfe238c549f1635ba27fc1daa858be70608b1" dependencies: @@ -784,55 +438,12 @@ babel-plugin-transform-es2015-parameters@^6.18.0, babel-plugin-transform-es2015- babel-traverse "^6.18.0" babel-types "^6.18.0" -babel-plugin-transform-es2015-shorthand-properties@^6.18.0, babel-plugin-transform-es2015-shorthand-properties@^6.5.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.18.0.tgz#e2ede3b7df47bf980151926534d1dd0cbea58f43" - dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" - -babel-plugin-transform-es2015-spread@^6.3.13, babel-plugin-transform-es2015-spread@^6.6.5, babel-plugin-transform-es2015-spread@^6.8.0: +babel-plugin-transform-es2015-spread@^6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.8.0.tgz#0217f737e3b821fa5a669f187c6ed59205f05e9c" dependencies: babel-runtime "^6.0.0" -babel-plugin-transform-es2015-sticky-regex@^6.3.13, babel-plugin-transform-es2015-sticky-regex@^6.5.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.8.0.tgz#e73d300a440a35d5c64f5c2a344dc236e3df47be" - dependencies: - babel-helper-regex "^6.8.0" - babel-runtime "^6.0.0" - babel-types "^6.8.0" - -babel-plugin-transform-es2015-template-literals@^6.6.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.8.0.tgz#86eb876d0a2c635da4ec048b4f7de9dfc897e66b" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.18.0.tgz#0b14c48629c90ff47a0650077f6aa699bee35798" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-unicode-regex@^6.3.13, babel-plugin-transform-es2015-unicode-regex@^6.5.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.11.0.tgz#6298ceabaad88d50a3f4f392d8de997260f6ef2c" - dependencies: - babel-helper-regex "^6.8.0" - babel-runtime "^6.0.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.8.0.tgz#db25742e9339eade676ca9acec46f955599a68a4" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.8.0" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.0.0" - babel-plugin-transform-inline-imports-commonjs@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-imports-commonjs/-/babel-plugin-transform-inline-imports-commonjs-1.2.0.tgz#20c7d192bafc54c8727386e3387d8ee4ef19e6a5" @@ -840,94 +451,18 @@ babel-plugin-transform-inline-imports-commonjs@^1.2.0: babel-plugin-transform-strict-mode "^6.8.0" builtin-modules "^1.1.1" -babel-plugin-transform-object-rest-spread@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.16.0.tgz#db441d56fffc1999052fdebe2e2f25ebd28e36a9" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.0.0" - -babel-plugin-transform-regenerator@^6.16.0: - version "6.16.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.16.1.tgz#a75de6b048a14154aae14b0122756c5bed392f59" - dependencies: - babel-runtime "^6.9.0" - babel-types "^6.16.0" - private "~0.1.5" - -babel-plugin-transform-runtime@^6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz#3d75b4d949ad81af157570273846fb59aeb0d57c" - dependencies: - babel-runtime "^6.9.0" - -babel-plugin-transform-strict-mode@^6.18.0, babel-plugin-transform-strict-mode@^6.8.0: +babel-plugin-transform-strict-mode@^6.8.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.18.0.tgz#df7cf2991fe046f44163dcd110d5ca43bc652b9d" dependencies: babel-runtime "^6.0.0" babel-types "^6.18.0" -babel-preset-es2015-node4@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2015-node4/-/babel-preset-es2015-node4-2.1.0.tgz#9852f281e2332b57d49c189841ac25466a6ebe98" - dependencies: - babel-plugin-transform-es2015-destructuring "^6.6.5" - babel-plugin-transform-es2015-function-name "^6.5.0" - babel-plugin-transform-es2015-modules-commonjs "^6.7.4" - babel-plugin-transform-es2015-parameters "^6.7.0" - babel-plugin-transform-es2015-shorthand-properties "^6.5.0" - babel-plugin-transform-es2015-spread "^6.6.5" - babel-plugin-transform-es2015-sticky-regex "^6.5.0" - babel-plugin-transform-es2015-unicode-regex "^6.5.0" - -babel-preset-es2015@^6.16.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz#b8c70df84ec948c43dcf2bf770e988eb7da88312" - dependencies: - babel-plugin-check-es2015-constants "^6.3.13" - babel-plugin-transform-es2015-arrow-functions "^6.3.13" - babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" - babel-plugin-transform-es2015-block-scoping "^6.18.0" - babel-plugin-transform-es2015-classes "^6.18.0" - babel-plugin-transform-es2015-computed-properties "^6.3.13" - babel-plugin-transform-es2015-destructuring "^6.18.0" - babel-plugin-transform-es2015-duplicate-keys "^6.6.0" - babel-plugin-transform-es2015-for-of "^6.18.0" - babel-plugin-transform-es2015-function-name "^6.9.0" - babel-plugin-transform-es2015-literals "^6.3.13" - babel-plugin-transform-es2015-modules-amd "^6.18.0" - babel-plugin-transform-es2015-modules-commonjs "^6.18.0" - babel-plugin-transform-es2015-modules-systemjs "^6.18.0" - babel-plugin-transform-es2015-modules-umd "^6.18.0" - babel-plugin-transform-es2015-object-super "^6.3.13" - babel-plugin-transform-es2015-parameters "^6.18.0" - babel-plugin-transform-es2015-shorthand-properties "^6.18.0" - babel-plugin-transform-es2015-spread "^6.3.13" - babel-plugin-transform-es2015-sticky-regex "^6.3.13" - babel-plugin-transform-es2015-template-literals "^6.6.0" - babel-plugin-transform-es2015-typeof-symbol "^6.18.0" - babel-plugin-transform-es2015-unicode-regex "^6.3.13" - babel-plugin-transform-regenerator "^6.16.0" - -babel-preset-stage-2@^6.17.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.18.0.tgz#9eb7bf9a8e91c68260d5ba7500493caaada4b5b5" - dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-plugin-transform-class-properties "^6.18.0" - babel-plugin-transform-decorators "^6.13.0" - babel-preset-stage-3 "^6.17.0" - -babel-preset-stage-3@^6.17.0: - version "6.17.0" - resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.17.0.tgz#b6638e46db6e91e3f889013d8ce143917c685e39" +babel-preset-jest@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-17.0.2.tgz#141e935debe164aaa0364c220d31ccb2176493b2" dependencies: - babel-plugin-syntax-trailing-function-commas "^6.3.13" - babel-plugin-transform-async-generator-functions "^6.17.0" - babel-plugin-transform-async-to-generator "^6.16.0" - babel-plugin-transform-exponentiation-operator "^6.3.13" - babel-plugin-transform-object-rest-spread "^6.16.0" + babel-plugin-jest-hoist "^17.0.2" babel-register@^6.18.0: version "6.18.0" @@ -948,7 +483,7 @@ babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.9.0, babel-runtime core-js "^2.4.0" regenerator-runtime "^0.9.5" -babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.7.0, babel-template@^6.8.0: +babel-template@^6.16.0, babel-template@^6.8.0: version "6.16.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" dependencies: @@ -959,31 +494,31 @@ babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-te lodash "^4.2.0" babel-traverse@^6.16.0, babel-traverse@^6.18.0, babel-traverse@^6.7.3: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.18.0.tgz#5aeaa980baed2a07c8c47329cd90c3b90c80f05e" + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.19.0.tgz#68363fb821e26247d52a519a84b2ceab8df4f55a" dependencies: babel-code-frame "^6.16.0" babel-messages "^6.8.0" babel-runtime "^6.9.0" - babel-types "^6.18.0" + babel-types "^6.19.0" babylon "^6.11.0" debug "^2.2.0" globals "^9.0.0" invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.13.0, babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.7.2, babel-types@^6.8.0, babel-types@^6.9.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.18.0.tgz#1f7d5a73474c59eb9151b2417bbff4e4fce7c3f8" +babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.19.0.tgz#8db2972dbed01f1192a8b602ba1e1e4c516240b9" dependencies: babel-runtime "^6.9.1" esutils "^2.0.2" lodash "^4.2.0" to-fast-properties "^1.0.1" -babylon@^6.1.0, babylon@^6.1.21, babylon@^6.11.0: - version "6.13.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.13.1.tgz#adca350e088f0467647157652bafead6ddb8dfdb" +babylon@^6.1.21, babylon@^6.11.0, babylon@^6.13.0: + version "6.14.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.0.tgz#c8ba4b69b544b2cd8f3fb96b06614660a49b7128" balanced-match@^0.4.1: version "0.4.2" @@ -999,10 +534,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -binary-extensions@^1.0.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.7.0.tgz#6c1610db163abfb34edfe42fa423343a1e01185d" - binary@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" @@ -1016,19 +547,13 @@ bl@^1.0.0: dependencies: readable-stream "~2.0.5" -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - bluebird-lst-c@^1.0.2, bluebird-lst-c@^1.0.3, bluebird-lst-c@^1.0.4, bluebird-lst-c@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/bluebird-lst-c/-/bluebird-lst-c-1.0.5.tgz#50da657dcde337a0e29d9e080ba714c5a52016e2" dependencies: bluebird "^3.4.6" -bluebird@^3.4.1, bluebird@^3.4.6: +bluebird@^3.4.6: version "3.4.6" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" @@ -1067,9 +592,17 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -buf-compare@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" +browser-resolve@^1.11.2: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + +bser@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169" + dependencies: + node-int64 "^0.4.0" buffer-crc32@^0.2.1: version "0.2.5" @@ -1087,26 +620,9 @@ builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -caching-transform@^1.0.1: - 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" - -call-matcher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.0.0.tgz#eafa31036dbfaa9c0d1716f12ddacfd9c69ef22f" - dependencies: - core-js "^2.0.0" - deep-equal "^1.0.0" - espurify "^1.6.0" - estraverse "^4.0.0" - -call-signature@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" camelcase-keys@^2.0.0: version "2.1.0" @@ -1131,6 +647,13 @@ capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" +cardinal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-1.0.0.tgz#50e21c1b0aa37729f9377def196b5a9cec932ee9" + dependencies: + ansicolors "~0.2.1" + redeyed "~1.0.0" + caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" @@ -1148,14 +671,6 @@ chainsaw@~0.1.0: dependencies: traverse ">=0.3.0 <0.4" -chalk@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" - chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -1166,21 +681,6 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chokidar@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - chromium-pickle-js@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" @@ -1189,10 +689,6 @@ ci-info@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" -clean-yaml-object@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" - cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" @@ -1203,16 +699,18 @@ cli-cursor@^1.0.2: dependencies: restore-cursor "^1.0.1" -cli-spinners@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.3.0.tgz#d822cc65116aa70ae7f6d2a826eda845fc0e4ef1" +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + dependencies: + colors "1.0.3" -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" +cli-usage@^0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/cli-usage/-/cli-usage-0.1.4.tgz#7c01e0dc706c234b39c933838c8e20b2175776e2" dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" + marked "^0.3.6" + marked-terminal "^1.6.2" cliui@^2.1.0: version "2.1.0" @@ -1230,11 +728,9 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -co-with-promise@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co-with-promise/-/co-with-promise-4.6.0.tgz#413e7db6f5893a60b942cf492c4bec93db415ab7" - dependencies: - pinkie-promise "^1.0.0" +clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" code-point-at@^1.0.0: version "1.1.0" @@ -1244,6 +740,10 @@ color-convert@~0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + colors@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -1268,14 +768,6 @@ commander@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781" -common-path-prefix@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - compare-func@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" @@ -1326,6 +818,10 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" +content-type-parser@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" + conventional-changelog-angular@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.3.0.tgz#3f64185978aa13ab0954c9e46a78969fd59c6801" @@ -1464,18 +960,11 @@ conventional-commits-parser@^1.0.0, conventional-commits-parser@^1.3.0: through2 "^2.0.0" trim-off-newlines "^1.0.0" -convert-source-map@^1.1.0, convert-source-map@^1.3.0: +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" -core-assert@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" - dependencies: - buf-compare "^1.0.0" - is-error "^2.2.0" - -core-js@^2.0.0, core-js@^2.4.0: +core-js@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" @@ -1496,19 +985,22 @@ create-error-class@^3.0.1: dependencies: capture-stack-trace "^1.0.0" -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" - cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" dependencies: boom "2.x.x" +cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.1.tgz#c9e37ef2490e64f6d1baa10fda852257082c25d3" + +"cssstyle@>= 0.2.36 < 0.3.0": + version "0.2.37" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + dependencies: + cssom "0.3.x" + cuint@^0.2.1, cuint@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" @@ -1531,10 +1023,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-time@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07" - dateformat@^1.0.11, dateformat@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" @@ -1548,12 +1036,6 @@ debug@2, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.2: dependencies: ms "0.7.2" -debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -1574,14 +1056,14 @@ decompress-zip@^0.3.0: readable-stream "^1.1.8" touch "0.0.3" -deep-equal@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - deep-extend@~0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1634,7 +1116,7 @@ dezalgo@^1.0.0, dezalgo@^1.0.1: asap "^2.0.0" wrappy "1" -diff@^3.0.1: +diff@^3.0.0, diff@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.0.1.tgz#a52d90cc08956994be00877bff97110062582c35" @@ -1654,10 +1136,6 @@ duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" -eastasianwidth@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.1.1.tgz#44d656de9da415694467335365fb3147b8572b7c" - ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -1689,13 +1167,6 @@ electron-macos-sign@1.0.1: plist "^2.0.1" tempfile "^1.1.1" -empower-core@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.1.tgz#6c187f502fcef7554d57933396aac655483772b1" - dependencies: - call-signature "0.0.2" - core-js "^2.0.0" - end-of-stream@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.1.0.tgz#e9353258baa9108965efc41cb0ef8ade2f3cfb07" @@ -1706,38 +1177,44 @@ entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" +"errno@>=0.1.1 <0.2.0-0": + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + error-ex@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" dependencies: is-arrayish "^0.2.1" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, 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" -espower-location-detector@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-0.1.2.tgz#d43be738af3e0b18197eeb5c22b95512dee6b83c" +escodegen@1.8.x, escodegen@^1.6.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" dependencies: - is-url "^1.2.1" - path-is-absolute "^1.0.0" - source-map "^0.5.0" - xtend "^4.0.0" + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" -esprima@^2.6.0: +esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -espurify@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.6.0.tgz#6cb993582d9422bd6f2d4b258aadb14833f394f0" - dependencies: - core-js "^2.0.0" +esprima@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" esutils@^2.0.2: version "2.0.2" @@ -1755,6 +1232,12 @@ event-stream@^3.3.0: stream-combiner "~0.0.4" through "~2.3.1" +exec-sh@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.0.tgz#14f75de3f20d286ef933099b2ce50a90359cef10" + dependencies: + merge "^1.1.3" + exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" @@ -1785,17 +1268,27 @@ extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" +fast-levenshtein@~2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2" + +fb-watchman@^1.8.0, fb-watchman@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.0.tgz#6f268f1f347a6b3c875d1e89da7e1ed79adfc0ec" dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" + bser "^1.0.2" filename-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" +fileset@0.2.x: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-0.2.1.tgz#588ef8973c6623b2a76df465105696b96aac8067" + dependencies: + glob "5.x" + minimatch "2.x" + fill-range@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" @@ -1810,27 +1303,13 @@ filled-array@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" -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: +find-up@^1.0.0, find-up@^1.1.2: 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: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.0.0.tgz#71e6dc2dad9222143cfc0fa5de7ab739e7320c05" - dependencies: - path-exists "^2.0.0" - findup-sync@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" @@ -1844,10 +1323,6 @@ findup@0.1.5: colors "~0.6.0-1" commander "~2.1.0" -fn-name@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" - follow-redirects@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-0.0.7.tgz#34b90bab2a911aa347571da90f22bd36ecd8a919" @@ -1904,33 +1379,9 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0: - version "1.0.15" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.15.tgz#fa63f590f3c2ad91275e4972a6cea545fb0aae44" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.29" - -fstream-ignore@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -gauge@~2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.6.0.tgz#d35301ad18e96902b4751dcbbe40f4218b942a46" +gauge@~2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.1.tgz#388473894fe8be5e13ffcdb8b93e4ed0616428c7" dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -1966,12 +1417,6 @@ get-pkg-repo@^1.0.0: parse-github-repo-url "^1.3.0" through2 "^2.0.0" -get-port@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-2.1.0.tgz#8783f9dcebd1eea495a334e1a6a251e78887ab1a" - dependencies: - pinkie-promise "^2.0.0" - get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -2055,6 +1500,16 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob@5.x, glob@^5.0.15, glob@~5.0.0: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^6.0.0, glob@^6.0.1: version "6.0.4" resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" @@ -2065,7 +1520,7 @@ glob@^6.0.0, glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: @@ -2076,30 +1531,10 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@~5.0.0: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - globals@^9.0.0: version "9.13.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.13.0.tgz#d97706b61600d8dbe94708c367d3fdcf48470b8f" -globby@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - got@^5.0.0: version "5.7.1" resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" @@ -2128,7 +1563,11 @@ graceful-fs@^4.1.0, graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.3, version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -handlebars@^4.0.2: +growly@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + +handlebars@^4.0.1, handlebars@^4.0.2, handlebars@^4.0.3: version "4.0.6" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7" dependencies: @@ -2153,13 +1592,13 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-color@^0.1.7, has-color@~0.1.0: +has-color@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" has-unicode@^2.0.0: version "2.0.1" @@ -2193,6 +1632,12 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" +html-encoding-sniffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da" + dependencies: + whatwg-encoding "^1.0.1" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -2216,9 +1661,9 @@ husky@^0.11.9: is-ci "^1.0.9" normalize-path "^1.0.0" -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" +iconv-lite@0.4.13, iconv-lite@^0.4.13: + version "0.4.13" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" imurmurhash@^0.1.4: version "0.1.4" @@ -2237,7 +1682,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: +inherits@2, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -2246,8 +1691,8 @@ ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" invariant@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.1.tgz#b097010547668c7e337028ebe816ebe36c8a8d54" + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" dependencies: loose-envify "^1.0.0" @@ -2255,20 +1700,10 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" -irregular-plurals@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - is-buffer@^1.0.2: version "1.1.4" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" @@ -2295,10 +1730,6 @@ is-equal-shallow@^0.1.3: dependencies: is-primitive "^2.0.0" -is-error@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" - is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -2319,10 +1750,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" - 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" @@ -2348,20 +1775,10 @@ is-number@^2.0.2, is-number@^2.1.0: dependencies: kind-of "^3.0.2" -is-obj@^1.0.0, is-obj@^1.0.1: +is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" -is-observable@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" - dependencies: - symbol-observable "^0.2.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - 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" @@ -2370,10 +1787,6 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" @@ -2404,10 +1817,6 @@ is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" -is-url@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" - is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -2438,6 +1847,265 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +istanbul-api@^1.0.0-aplha.10: + version "1.0.0-aplha.10" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.0.0-aplha.10.tgz#902edf5cf5404e0eba7e00ef46408488a0d3e337" + dependencies: + async "1.x" + clone "^1.0.2" + fileset "0.2.x" + istanbul-lib-coverage "^1.0.0-alpha" + istanbul-lib-hook "^1.0.0-alpha" + istanbul-lib-instrument "^1.0.0-alpha" + istanbul-lib-report "^1.0.0-alpha" + istanbul-lib-source-maps "^1.0.0-alpha" + istanbul-reports "^1.0.0-alpha" + js-yaml "3.x" + mkdirp "0.5.x" + once "1.x" + +istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.0.tgz#c3f9b6d226da12424064cce87fce0fb57fdfa7a2" + +istanbul-lib-hook@^1.0.0-alpha: + version "1.0.0-alpha.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.0-alpha.4.tgz#8c5bb9f6fbd8526e0ae6cf639af28266906b938f" + dependencies: + append-transform "^0.3.0" + +istanbul-lib-instrument@^1.0.0-alpha, istanbul-lib-instrument@^1.1.1, istanbul-lib-instrument@^1.1.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.3.0.tgz#19f0a973397454989b98330333063a5b56df0e58" + 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.0.0" + semver "^5.3.0" + +istanbul-lib-report@^1.0.0-alpha: + version "1.0.0-alpha.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af" + dependencies: + async "^1.4.2" + istanbul-lib-coverage "^1.0.0-alpha" + mkdirp "^0.5.1" + path-parse "^1.0.5" + rimraf "^2.4.3" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.0.0-alpha: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f" + dependencies: + istanbul-lib-coverage "^1.0.0-alpha.0" + mkdirp "^0.5.1" + rimraf "^2.4.4" + source-map "^0.5.3" + +istanbul-reports@^1.0.0-alpha: + version "1.0.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.0.0.tgz#24b4eb2b1d29d50f103b369bd422f6e640aa0777" + dependencies: + handlebars "^4.0.3" + +istanbul@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +jest-changed-files@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-17.0.2.tgz#f5657758736996f590a51b87e5c9369d904ba7b7" + +jest-cli@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-17.0.3.tgz#700b8c02a9ea0ec9eab0cd5a9fd42d8a858ce146" + dependencies: + ansi-escapes "^1.4.0" + callsites "^2.0.0" + chalk "^1.1.1" + graceful-fs "^4.1.6" + is-ci "^1.0.9" + istanbul-api "^1.0.0-aplha.10" + istanbul-lib-coverage "^1.0.0" + istanbul-lib-instrument "^1.1.1" + jest-changed-files "^17.0.2" + jest-config "^17.0.3" + jest-environment-jsdom "^17.0.2" + jest-file-exists "^17.0.0" + jest-haste-map "^17.0.3" + jest-jasmine2 "^17.0.3" + jest-mock "^17.0.2" + jest-resolve "^17.0.3" + jest-resolve-dependencies "^17.0.3" + jest-runtime "^17.0.3" + jest-snapshot "^17.0.3" + jest-util "^17.0.2" + json-stable-stringify "^1.0.0" + node-notifier "^4.6.1" + sane "~1.4.1" + strip-ansi "^3.0.1" + throat "^3.0.0" + which "^1.1.1" + worker-farm "^1.3.1" + yargs "^6.3.0" + +jest-config@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-17.0.3.tgz#b6ed75d90d090b731fd894231904cadb7d5a5df2" + dependencies: + chalk "^1.1.1" + istanbul "^0.4.5" + jest-environment-jsdom "^17.0.2" + jest-environment-node "^17.0.2" + jest-jasmine2 "^17.0.3" + jest-mock "^17.0.2" + jest-resolve "^17.0.3" + jest-util "^17.0.2" + json-stable-stringify "^1.0.0" + +jest-diff@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-17.0.3.tgz#8fb31efab3b314d7b61b7b66b0bdea617ef1c02f" + dependencies: + chalk "^1.1.3" + diff "^3.0.0" + jest-matcher-utils "^17.0.3" + pretty-format "~4.2.1" + +jest-environment-jsdom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-17.0.2.tgz#a3098dc29806d40802c52b62b848ab6aa00fdba0" + dependencies: + jest-mock "^17.0.2" + jest-util "^17.0.2" + jsdom "^9.8.1" + +jest-environment-node@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-17.0.2.tgz#aff6133f4ca2faddcc5b0ce7d25cec83e16d8463" + dependencies: + jest-mock "^17.0.2" + jest-util "^17.0.2" + +jest-file-exists@^17.0.0: + version "17.0.0" + resolved "https://registry.yarnpkg.com/jest-file-exists/-/jest-file-exists-17.0.0.tgz#7f63eb73a1c43a13f461be261768b45af2cdd169" + +jest-haste-map@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-17.0.3.tgz#5232783e70577217b6b17d2a1c1766637a1d2fbd" + dependencies: + fb-watchman "^1.9.0" + graceful-fs "^4.1.6" + multimatch "^2.1.0" + sane "~1.4.1" + worker-farm "^1.3.1" + +jest-jasmine2@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-17.0.3.tgz#d4336b89f3ad288269a1c8e2bfc180dcf89c6ad1" + dependencies: + graceful-fs "^4.1.6" + jest-matchers "^17.0.3" + jest-snapshot "^17.0.3" + jest-util "^17.0.2" + +jest-matcher-utils@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-17.0.3.tgz#f108e49b956e152c6626dcc0aba864f59ab7b0d3" + dependencies: + chalk "^1.1.3" + pretty-format "~4.2.1" + +jest-matchers@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-17.0.3.tgz#88b95348c919343db86d08f12354a8650ae7eddf" + dependencies: + jest-diff "^17.0.3" + jest-matcher-utils "^17.0.3" + jest-util "^17.0.2" + +jest-mock@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-17.0.2.tgz#3dfe9221afd9aa61b3d9992840813a358bb2f429" + +jest-resolve-dependencies@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-17.0.3.tgz#bbd37f4643704b97a980927212f3ab12b06e8894" + dependencies: + jest-file-exists "^17.0.0" + jest-resolve "^17.0.3" + +jest-resolve@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-17.0.3.tgz#7692a79de2831874375e9d664bc782c29e4da262" + dependencies: + browser-resolve "^1.11.2" + jest-file-exists "^17.0.0" + jest-haste-map "^17.0.3" + resolve "^1.1.6" + +jest-runtime@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-17.0.3.tgz#eff4055fe8c3e17c95ed1aaaf5f719c420b86b1f" + dependencies: + babel-core "^6.0.0" + babel-jest "^17.0.2" + babel-plugin-istanbul "^2.0.0" + chalk "^1.1.3" + graceful-fs "^4.1.6" + jest-config "^17.0.3" + jest-file-exists "^17.0.0" + jest-haste-map "^17.0.3" + jest-mock "^17.0.2" + jest-resolve "^17.0.3" + jest-snapshot "^17.0.3" + jest-util "^17.0.2" + json-stable-stringify "^1.0.0" + multimatch "^2.1.0" + yargs "^6.3.0" + +jest-snapshot@^17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-17.0.3.tgz#c8199db4ccbd5515cfecc8e800ab076bdda7abc0" + dependencies: + jest-diff "^17.0.3" + jest-file-exists "^17.0.0" + jest-matcher-utils "^17.0.3" + jest-util "^17.0.2" + natural-compare "^1.4.0" + pretty-format "~4.2.1" + +jest-util@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-17.0.2.tgz#9fd9da8091e9904fb976da7e4d8912ca26968638" + dependencies: + chalk "^1.1.1" + diff "^3.0.0" + graceful-fs "^4.1.6" + jest-file-exists "^17.0.0" + jest-mock "^17.0.2" + mkdirp "^0.5.1" + jju@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jju/-/jju-1.3.0.tgz#dadd9ef01924bc728b03f2f7979bdbd62f7a2aaa" @@ -2452,7 +2120,7 @@ js-tokens@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" -js-yaml@^3.4.2, js-yaml@^3.7.0: +js-yaml@3.x, js-yaml@^3.4.2, js-yaml@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" dependencies: @@ -2463,14 +2131,35 @@ jsbn@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" +jsdom@^9.8.1: + version "9.8.3" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.8.3.tgz#fde29c109c32a1131e0b6c65914e64198f97c370" + dependencies: + abab "^1.0.0" + acorn "^2.4.0" + acorn-globals "^1.0.4" + array-equal "^1.0.0" + content-type-parser "^1.0.1" + cssom ">= 0.3.0 < 0.4.0" + cssstyle ">= 0.2.36 < 0.3.0" + escodegen "^1.6.1" + html-encoding-sniffer "^1.0.1" + iconv-lite "^0.4.13" + nwmatcher ">= 1.3.7 < 2.0.0" + parse5 "^1.5.1" + request "^2.55.0" + sax "^1.1.4" + symbol-tree ">= 3.1.0 < 4.0.0" + tough-cookie "^2.3.1" + webidl-conversions "^3.0.1" + whatwg-encoding "^1.0.1" + whatwg-url "^3.0.0" + xml-name-validator ">= 2.0.1 < 3.0.0" + jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - json-parse-helpfulerror@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" @@ -2481,6 +2170,12 @@ 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: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -2499,6 +2194,10 @@ jsonfile@^2.4.0: optionalDependencies: graceful-fs "^4.1.6" +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + jsonparse@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.2.0.tgz#5c0c5685107160e72fe7489bddea0b44c2bc67bd" @@ -2527,12 +2226,6 @@ klaw@^1.3.1: optionalDependencies: graceful-fs "^4.1.9" -last-line-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600" - dependencies: - through2 "^2.0.0" - latest-version@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" @@ -2559,6 +2252,13 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + linkify-it@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.0.2.tgz#994629a4adfa5a7d34e08c075611575ab9b6fcfc" @@ -2575,14 +2275,13 @@ load-json-file@^1.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" +lodash._arraycopy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" + +lodash._arrayeach@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz#bab156b2a90d3f1bbd5c653403349e5e5933ef9e" lodash._baseassign@^3.0.0: version "3.2.0" @@ -2591,10 +2290,25 @@ lodash._baseassign@^3.0.0: lodash._basecopy "^3.0.0" lodash.keys "^3.0.0" +lodash._baseclone@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz#303519bf6393fe7e42f34d8b630ef7794e3542b7" + dependencies: + lodash._arraycopy "^3.0.0" + lodash._arrayeach "^3.0.0" + lodash._baseassign "^3.0.0" + lodash._basefor "^3.0.0" + lodash.isarray "^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._basefor@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2" + lodash._bindcallback@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" @@ -2627,21 +2341,16 @@ lodash.assign@^3.0.0: lodash._createassigner "^3.0.0" lodash.keys "^3.0.0" -lodash.assign@^4.0.3, lodash.assign@^4.0.6: +lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - -lodash.flatten@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" +lodash.clonedeep@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz#a0a1e40d82a5ea89ff5b147b8444ed63d92827db" + dependencies: + lodash._baseclone "^3.0.0" + lodash._bindcallback "^3.0.0" lodash.isarguments@^3.0.0: version "3.1.0" @@ -2651,10 +2360,6 @@ lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" -lodash.isequal@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.4.0.tgz#6295768e98e14dc15ce8d362ef6340db82852031" - lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" @@ -2685,8 +2390,8 @@ lodash@^3.6.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" lodash@^4.0.0, lodash@^4.14.0, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.5.1, lodash@^4.8.0: - version "4.17.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.1.tgz#e75eaf17a34730c6491d9956f4d81f3a044f01bf" + version "4.17.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" longest@^1.0.1: version "1.0.1" @@ -2698,7 +2403,7 @@ loose-envify@^1.0.0: dependencies: js-tokens "^2.0.0" -loud-rejection@^1.0.0, loud-rejection@^1.6.0: +loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" dependencies: @@ -2709,17 +2414,16 @@ lowercase-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" -lru-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.1.tgz#1343955edaf2e37d9b9e7ee7241e27c4b9fb72be" - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - macaddress@^0.2.7: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + dependencies: + tmpl "1.0.x" + map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -2738,31 +2442,25 @@ markdown-it@^8.1.0: mdurl "^1.0.1" uc.micro "^1.0.3" -matcher@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-0.1.2.tgz#ef20cbde64c24c50cc61af5b83ee0b1b8ff00101" - dependencies: - escape-string-regexp "^1.0.4" - -max-timeout@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/max-timeout/-/max-timeout-1.0.0.tgz#b68f69a2f99e0b476fd4cb23e2059ca750715e1f" - -md5-hex@^1.2.0, md5-hex@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" +marked-terminal@^1.6.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-1.7.0.tgz#c8c460881c772c7604b64367007ee5f77f125904" dependencies: - md5-o-matic "^0.1.1" + cardinal "^1.0.0" + chalk "^1.1.3" + cli-table "^0.3.1" + lodash.assign "^4.2.0" + node-emoji "^1.4.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" +marked@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" -meow@^3.1.0, meow@^3.3.0, meow@^3.7.0: +meow@^3.1.0, meow@^3.3.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" dependencies: @@ -2777,7 +2475,11 @@ meow@^3.1.0, meow@^3.3.0, meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" -micromatch@^2.1.5: +merge@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + +micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -2815,15 +2517,21 @@ mime@^1.2.11, mime@^1.3.4: dependencies: brace-expansion "^1.0.0" +minimatch@2.x: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -2837,11 +2545,7 @@ modify-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@0.7.2, ms@^0.7.1: +ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" @@ -2862,9 +2566,9 @@ mv@^2.0.3: ncp "~2.0.0" rimraf "~2.4.0" -nan@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" ncp@~2.0.0: version "2.0.0" @@ -2876,19 +2580,21 @@ node-emoji@^1.4.1: dependencies: string.prototype.codepointat "^0.2.0" -node-pre-gyp@^0.6.29: - version "0.6.31" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.31.tgz#d8a00ddaa301a940615dbcc8caad4024d58f6017" +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + +node-notifier@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-4.6.1.tgz#056d14244f3dcc1ceadfe68af9cff0c5473a33f3" dependencies: - mkdirp "~0.5.1" - nopt "~3.0.6" - npmlog "^4.0.0" - rc "~1.1.6" - request "^2.75.0" - rimraf "~2.5.4" - semver "~5.3.0" - tar "~2.2.1" - tar-pack "~3.3.0" + cli-usage "^0.1.1" + growly "^1.2.0" + lodash.clonedeep "^3.0.0" + minimist "^1.1.1" + semver "^5.1.0" + shellwords "^0.1.0" + which "^1.0.5" node-status-codes@^1.0.0: version "1.0.0" @@ -2898,7 +2604,7 @@ node-uuid@~1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" -nopt@^3.0.1, nopt@~3.0.6: +nopt@3.x, nopt@^3.0.1: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: @@ -2943,8 +2649,8 @@ normalize-path@^2.0.0, normalize-path@^2.0.1: semver "^5.1.0" npm-registry-client@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-7.3.0.tgz#f2a390e8b13b78fafe26e9fa9d8bc74e17bcaa50" + version "7.4.1" + resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-7.4.1.tgz#e9e5de15bb498fe49fff87f7cf9aece21e071e42" dependencies: concat-stream "^1.5.2" graceful-fs "^4.1.6" @@ -2956,24 +2662,15 @@ npm-registry-client@^7.3.0: semver "2 >=2.2.1 || 3.x || 4 || 5" slide "^1.1.3" optionalDependencies: - npmlog "~2.0.0 || ~3.1.0" - -npmlog@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.0.tgz#e094503961c70c1774eb76692080e8d578a9f88f" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.6.0" - set-blocking "~2.0.0" + npmlog "2 || ^3.1.0 || ^4.0.0" -"npmlog@~2.0.0 || ~3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-3.1.2.tgz#2d46fa874337af9498a2f12bb43d8d0be4a36873" +"npmlog@2 || ^3.1.0 || ^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.1.tgz#d14f503b4cd79710375553004ba96e6662fbc0b8" dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" - gauge "~2.6.0" + gauge "~2.7.1" set-blocking "~2.0.0" nugget@^1.5.1: @@ -2992,6 +2689,10 @@ 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" +"nwmatcher@>= 1.3.7 < 2.0.0": + version "1.3.9" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a" + oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -3011,20 +2712,13 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -observable-to-promise@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.4.0.tgz#28afe71645308f2d41d71f47ad3fece1a377e52b" - dependencies: - is-observable "^0.2.0" - symbol-observable "^0.2.2" - -once@^1.3.0, once@^1.3.3: +once@1.x, once@^1.3.0, once@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -once@~1.3.0, once@~1.3.3: +once@~1.3.0: version "1.3.3" resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" dependencies: @@ -3041,11 +2735,16 @@ optimist@^0.6.1, optimist@~0.6.0: minimist "~0.0.1" wordwrap "~0.0.2" -option-chain@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-0.1.1.tgz#e9b811e006f1c0f54802f28295bfc8970f8dcfbd" +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" dependencies: - object-assign "^4.0.1" + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" os-homedir@^1.0.0: version "1.0.2" @@ -3068,12 +2767,6 @@ osenv@^0.1.0: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -package-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" - dependencies: - md5-hex "^1.3.0" - package-json@^2.0.0: version "2.4.0" resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" @@ -3108,14 +2801,14 @@ parse-json@^2.1.0, parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parse-ms@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-0.1.2.tgz#dd3fa25ed6c2efc7bdde12ad9b46c163aa29224e" - parse-ms@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" +parse5@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" + path-exists@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-1.0.0.tgz#d5a8998eb71ef37a74c34eb0d9eba6e878eea081" @@ -3137,6 +2830,10 @@ path-object@^2.3.0: core-util-is "^1.0.1" lodash.assign "^3.0.0" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + path-sort@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/path-sort/-/path-sort-0.1.0.tgz#cb0175d4ecbfa5a18fe674cc6d720bfe15e0b805" @@ -3159,39 +2856,16 @@ pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" -pinkie-promise@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670" - dependencies: - pinkie "^1.0.0" - 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@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-1.0.0.tgz#5a47f28ba1015d0201bda7bf0f358e47bec8c7e4" - pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" -pkg-conf@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279" - dependencies: - find-up "^2.0.0" - load-json-file "^2.0.0" - -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" - plist@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/plist/-/plist-2.0.1.tgz#0a32ca9481b1c364e92e18dc55c876de9d01da8b" @@ -3204,58 +2878,9 @@ plur@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156" -plur@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" - dependencies: - irregular-plurals "^1.0.0" - -power-assert-context-formatter@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz#edba352d3ed8a603114d667265acce60d689ccdf" - dependencies: - core-js "^2.0.0" - power-assert-context-traversal "^1.1.1" - -power-assert-context-traversal@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz#88cabca0d13b6359f07d3d3e8afa699264577ed9" - dependencies: - core-js "^2.0.0" - estraverse "^4.1.0" - -power-assert-renderer-assertion@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz#cbfc0e77e0086a8f96af3f1d8e67b9ee7e28ce98" - dependencies: - power-assert-renderer-base "^1.1.1" - power-assert-util-string-width "^1.1.1" - -power-assert-renderer-base@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz#96a650c6fd05ee1bc1f66b54ad61442c8b3f63eb" - -power-assert-renderer-diagram@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.1.tgz#7e0c82cc08a84b155e51b5ae94f59709778a65fb" - dependencies: - core-js "^2.0.0" - power-assert-renderer-base "^1.1.1" - power-assert-util-string-width "^1.1.1" - stringifier "^1.3.0" - -power-assert-renderer-succinct@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-renderer-succinct/-/power-assert-renderer-succinct-1.1.1.tgz#c2a468b23822abd6f80e2aba5322347b09df476e" - dependencies: - core-js "^2.0.0" - power-assert-renderer-diagram "^1.1.1" - -power-assert-util-string-width@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz#be659eb7937fdd2e6c9a77268daaf64bd5b7c592" - dependencies: - eastasianwidth "^0.1.1" +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" prepend-http@^1.0.1: version "1.0.4" @@ -3272,11 +2897,9 @@ pretty-bytes@^1.0.2: get-stdin "^4.0.1" meow "^3.1.0" -pretty-ms@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" - dependencies: - parse-ms "^0.1.0" +pretty-format@~4.2.1: + version "4.2.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-4.2.3.tgz#8894c2ac81419cf801629d8f66320a25380d8b05" pretty-ms@^2.1.0: version "2.1.0" @@ -3286,7 +2909,7 @@ pretty-ms@^2.1.0: parse-ms "^1.0.0" plur "^1.0.0" -private@^0.1.6, private@~0.1.5: +private@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1" @@ -3305,9 +2928,9 @@ progress@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" punycode@^1.4.1: version "1.4.1" @@ -3328,7 +2951,7 @@ randomatic@^1.1.3: is-number "^2.0.2" kind-of "^3.0.2" -rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@~1.1.6: +rc@^1.0.1, rc@^1.1.2, rc@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" dependencies: @@ -3414,18 +3037,6 @@ readable-stream@~2.0.0, readable-stream@~2.0.5: string_decoder "~0.10.x" util-deprecate "~1.0.1" -readable-stream@~2.1.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" - dependencies: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - readdir-scoped-modules@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" @@ -3435,15 +3046,6 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -3451,9 +3053,11 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" +redeyed@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-1.0.1.tgz#e96c193b40c0816b00aec842698e61185e55498a" + dependencies: + esprima "~3.0.0" regenerator-runtime@^0.9.5: version "0.9.6" @@ -3466,14 +3070,6 @@ regex-cache@^0.4.2: is-equal-shallow "^0.1.3" is-primitive "^2.0.0" -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - registry-auth-token@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b" @@ -3486,16 +3082,6 @@ registry-url@^3.0.3: dependencies: rc "^1.0.1" -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" @@ -3510,11 +3096,7 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -repeating@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-3.0.0.tgz#f4c376fdd2015761f6f96f4303b1224d581e802f" - -request@^2.45.0, request@^2.74.0, request@^2.75.0: +request@^2.45.0, request@^2.55.0, request@^2.74.0: version "2.78.0" resolved "https://registry.yarnpkg.com/request/-/request-2.78.0.tgz#e1c8dec346e1c81923b24acdb337f11decabe9cc" dependencies: @@ -3551,25 +3133,11 @@ require-package-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" -require-precompiled@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa" - require-relative@^0.8.7: version "0.8.7" resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" -resolve-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-1.0.0.tgz#4eaeea41ed040d1702457df64a42b2b07d246f9f" - dependencies: - resolve-from "^2.0.0" - -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.7: +resolve@1.1.7, resolve@1.1.x, resolve@^1.1.6, resolve@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -3590,13 +3158,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4: - version "2.5.4" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" - dependencies: - glob "^7.0.5" - -rimraf@~2.4.0: +rimraf@^2.4.3, rimraf@^2.4.4, rimraf@~2.4.0: version "2.4.5" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" dependencies: @@ -3612,12 +3174,27 @@ run-series@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.4.tgz#89a73ddc5e75c9ef8ab6320c0a1600d6a41179b9" +sane@~1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sane/-/sane-1.4.1.tgz#88f763d74040f5f0c256b6163db399bf110ac715" + dependencies: + exec-sh "^0.2.0" + fb-watchman "^1.8.0" + minimatch "^3.0.2" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.10.0" + sanitize-filename@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.1.tgz#612da1c96473fa02dccda92dcd5b4ab164a6772a" dependencies: truncate-utf8-bytes "^1.0.0" +sax@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -3628,7 +3205,7 @@ semver-regex@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -3644,9 +3221,9 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" +shellwords@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14" signal-exit@^3.0.0: version "3.0.1" @@ -3660,10 +3237,6 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - slide@^1.1.3, slide@^1.1.5, slide@~1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -3674,13 +3247,7 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -sort-keys@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - dependencies: - is-plain-obj "^1.0.0" - -source-map-support@^0.4.2, source-map-support@^0.4.4, source-map-support@^0.4.6: +source-map-support@^0.4.2, source-map-support@^0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb" dependencies: @@ -3696,6 +3263,12 @@ source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" @@ -3751,10 +3324,6 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -stack-utils@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-0.4.0.tgz#940cb82fccfa84e8ff2f3fdf293fe78016beccd1" - stream-combiner@~0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" @@ -3781,14 +3350,6 @@ string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -stringifier@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-1.3.0.tgz#def18342f6933db0f2dbfc9aa02175b448c17959" - dependencies: - core-js "^2.0.0" - traverse "^0.6.6" - type-name "^2.0.1" - stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -3799,20 +3360,12 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - 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-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -3827,22 +3380,15 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -symbol-observable@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" - -tar-pack@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" +supports-color@^3.1.0, supports-color@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" dependencies: - debug "~2.2.0" - fstream "~1.0.10" - fstream-ignore "~1.0.5" - once "~1.3.3" - readable-stream "~2.1.4" - rimraf "~2.5.1" - tar "~2.2.1" - uid-number "~0.0.6" + has-flag "^1.0.0" + +"symbol-tree@>= 3.1.0 < 4.0.0": + version "3.1.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.1.4.tgz#02b279348d337debc39694c5c95f882d448a312a" tar-stream@^1.5.0: version "1.5.2" @@ -3853,14 +3399,6 @@ tar-stream@^1.5.0: readable-stream "^2.0.0" xtend "^4.0.0" -tar@~2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - tempfile@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" @@ -3868,17 +3406,23 @@ tempfile@^1.1.1: os-tmpdir "^1.0.0" uuid "^2.0.1" +test-exclude@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-2.1.3.tgz#a8d8968e1da83266f9864f2852c55e220f06434a" + 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" + text-extensions@^1.0.0: version "1.3.3" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.3.3.tgz#fef0c8ce07f5bb3b8297bcf075304531754124bf" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -the-argv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/the-argv/-/the-argv-1.0.0.tgz#0084705005730dd84db755253c931ae398db9522" +throat@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-3.0.0.tgz#e7c64c867cbb3845f10877642f7b60055b8ec0d6" throttleit@0.0.2: version "0.0.2" @@ -3902,19 +3446,14 @@ through@2, "through@>=2.2.7 <3", through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -time-require@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98" - dependencies: - chalk "^0.4.0" - date-time "^0.1.1" - pretty-ms "^0.2.1" - text-table "^0.2.0" - timed-out@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.0.0.tgz#ff88de96030ce960eabd42487db61d3add229273" +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + 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" @@ -3925,20 +3464,20 @@ touch@0.0.3: dependencies: nopt "~1.0.10" -tough-cookie@~2.3.0: +tough-cookie@^2.3.1, tough-cookie@~2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" dependencies: punycode "^1.4.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + "traverse@>=0.3.0 <0.4": version "0.3.9" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" -traverse@^0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -3984,9 +3523,11 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" -type-name@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" typedarray@~0.0.5: version "0.0.6" @@ -4013,14 +3554,6 @@ 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" -uid-number@~0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -uid2@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" - underscore.string@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" @@ -4028,14 +3561,6 @@ underscore.string@^3.3.4: sprintf-js "^1.0.3" util-deprecate "^1.0.2" -unique-temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385" - dependencies: - mkdirp "^0.5.1" - os-tmpdir "^1.0.1" - uid2 "0.0.3" - unzip-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" @@ -4112,11 +3637,38 @@ walkdir@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" +walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + dependencies: + makeerror "1.0.x" + +watch@~0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" + +webidl-conversions@^3.0.0, webidl-conversions@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + +whatwg-encoding@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4" + dependencies: + iconv-lite "0.4.13" + +whatwg-url@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-3.0.0.tgz#b9033c50c7ce763e91d78777ce825a6d7f56dac5" + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" -which@^1.2.9: +which@^1.0.5, which@^1.1.1: version "1.2.12" resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" dependencies: @@ -4154,10 +3706,21 @@ wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" +wordwrap@^1.0.0, wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" +worker-farm@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.3.1.tgz#4333112bb49b17aa050b87895ca6b2cacf40e5ff" + dependencies: + errno ">=0.1.1 <0.2.0-0" + xtend ">=4.0.0 <4.1.0-0" + wrap-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.0.0.tgz#7d30f8f873f9a5bbc3a64dabc8d177e071ae426f" @@ -4168,7 +3731,7 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: +write-file-atomic@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.2.0.tgz#14c66d4e4cb3ca0565c28cf3b7a6f3e4d5938fab" dependencies: @@ -4176,30 +3739,16 @@ write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: imurmurhash "^0.1.4" slide "^1.1.5" -write-json-file@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-1.2.0.tgz#2d5dfe96abc3c889057c93971aa4005efb548134" - dependencies: - graceful-fs "^4.1.2" - mkdirp "^0.5.1" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - sort-keys "^1.1.1" - write-file-atomic "^1.1.2" - -write-pkg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-1.0.0.tgz#aeb8aa9d4d788e1d893dfb0854968b543a919f57" - dependencies: - write-json-file "^1.1.0" - xdg-basedir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" dependencies: os-homedir "^1.0.0" +"xml-name-validator@>= 2.0.1 < 3.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" + xmlbuilder@8.2.2: version "8.2.2" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" @@ -4208,7 +3757,7 @@ xmldom@0.1.x: version "0.1.22" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.22.tgz#10de4e5e964981f03c8cc72fadc08d14b6c3aa26" -xtend@^4.0.0, xtend@~4.0.0: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -4222,10 +3771,6 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -yallist@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4" - yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" @@ -4258,7 +3803,7 @@ yargs@^4.0.0: y18n "^3.2.1" yargs-parser "^2.4.1" -yargs@^6.4.0: +yargs@^6.3.0, yargs@^6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" dependencies: