diff --git a/package.json b/package.json index 13b76180db8..c14d1d9ad61 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "ajv": "^5.0.2-beta", "ajv-keywords": "^2.0.1-beta.0", "archiver": "^1.3.0", - "asar-electron-builder": "^0.13.5", + "asar": "~0.13.0", "aws-sdk": "^2.17.0", "bluebird-lst": "^1.0.1", "chalk": "^1.1.3", diff --git a/packages/electron-builder/package.json b/packages/electron-builder/package.json index be1f8a17b13..87622a7b7e0 100644 --- a/packages/electron-builder/package.json +++ b/packages/electron-builder/package.json @@ -47,7 +47,7 @@ "ajv": "^5.0.2-beta", "ajv-keywords": "^2.0.1-beta.0", "7zip-bin": "^2.0.4", - "asar-electron-builder": "^0.13.5", + "asar": "~0.13.0", "bluebird-lst": "^1.0.1", "chalk": "^1.1.3", "chromium-pickle-js": "^0.2.0", diff --git a/packages/electron-builder/src/asarUtil.ts b/packages/electron-builder/src/asarUtil.ts index 4f97ae08f54..3b98d138ccb 100644 --- a/packages/electron-builder/src/asarUtil.ts +++ b/packages/electron-builder/src/asarUtil.ts @@ -1,4 +1,4 @@ -import { AsarFileInfo, listPackage, statFile } from "asar-electron-builder" +import { AsarFileInfo, listPackage, statFile } from "asar" import BluebirdPromise from "bluebird-lst" import { debug } from "electron-builder-util" import { deepAssign } from "electron-builder-util/out/deepAssign" @@ -10,7 +10,7 @@ import { AsarOptions } from "./metadata" const isBinaryFile: any = BluebirdPromise.promisify(require("isbinaryfile")) const pickle = require ("chromium-pickle-js") -const Filesystem = require("asar-electron-builder/lib/filesystem") +const Filesystem = require("asar/lib/filesystem") const UINT64 = require("cuint").UINT64 const NODE_MODULES_PATTERN = `${path.sep}node_modules${path.sep}` diff --git a/packages/electron-builder/src/packager.ts b/packages/electron-builder/src/packager.ts index 83a8bcea1e6..d0b55257eb4 100644 --- a/packages/electron-builder/src/packager.ts +++ b/packages/electron-builder/src/packager.ts @@ -1,5 +1,4 @@ -import Ajv from "ajv" -import { extractFile } from "asar-electron-builder" +import { extractFile } from "asar" import BluebirdPromise from "bluebird-lst" import { Arch, Platform, Target } from "electron-builder-core" import { CancellationToken } from "electron-builder-http/out/CancellationToken" @@ -9,7 +8,6 @@ import { log, warn } from "electron-builder-util/out/log" import { all, executeFinally } from "electron-builder-util/out/promise" import { TmpDir } from "electron-builder-util/out/tmp" import { EventEmitter } from "events" -import { readJson } from "fs-extra-p" import * as path from "path" import { lt as isVersionLessThan } from "semver" import { AppInfo } from "./appInfo" @@ -19,7 +17,7 @@ import { ArtifactCreated, BuildInfo, PackagerOptions, SourceRepositoryInfo } fro import { PlatformPackager } from "./platformPackager" import { getRepositoryInfo } from "./repositoryInfo" import { createTargets } from "./targets/targetFactory" -import { doLoadConfig, getElectronVersion, loadConfig, normaliseErrorMessages, readPackageJson } from "./util/readPackageJson" +import { doLoadConfig, getElectronVersion, loadConfig, readPackageJson, validateConfig } from "./util/readPackageJson" import { WinPackager } from "./winPackager" import { getGypEnv, installOrRebuild } from "./yarn" @@ -130,14 +128,7 @@ export class Packager implements BuildInfo { } } - const ajv = new Ajv({allErrors: true}) - ajv.addMetaSchema(require("ajv/lib/refs/json-schema-draft-04.json")) - require("ajv-keywords")(ajv, ["typeof"]) - const schema = await readJson(path.join(__dirname, "..", "scheme.json")) - const validator = ajv.compile(schema) - if (!validator(config)) { - throw new Error("Config is invalid:\n" + JSON.stringify(normaliseErrorMessages(validator.errors!), null, 2) + "\n\nRaw validation errors: " + JSON.stringify(validator.errors, null, 2)) - } + await validateConfig(config) this._config = config this.appDir = await computeDefaultAppDirectory(projectDir, use(config.directories, it => it!.app)) diff --git a/packages/electron-builder/src/publish/publisher.ts b/packages/electron-builder/src/publish/publisher.ts index 62f1933ad11..991b365826e 100644 --- a/packages/electron-builder/src/publish/publisher.ts +++ b/packages/electron-builder/src/publish/publisher.ts @@ -1,5 +1,6 @@ +import { BintrayOptions, GenericServerOptions, GithubOptions, PublishConfiguration, S3Options } from "electron-builder-http/out/publishOptions" +import { warn } from "electron-builder-util/out/log" import { BuildInfo } from "../packagerApi" -import { PublishConfiguration, GithubOptions, S3Options, BintrayOptions, GenericServerOptions } from "electron-builder-http/out/publishOptions" export async function getResolvedPublishConfig(packager: BuildInfo, publishConfig: PublishConfiguration, errorIfCannot: boolean): Promise { if (publishConfig.provider === "generic") { @@ -22,11 +23,13 @@ export async function getResolvedPublishConfig(packager: BuildInfo, publishConfi return info } + const message = `Cannot detect repository by .git/config. Please specify "repository" in the package.json (https://docs.npmjs.com/files/package.json#repository).\nPlease see https://github.com/electron-userland/electron-builder/wiki/Publishing-Artifacts` if (!errorIfCannot) { + warn(message) return null } - throw new Error(`Cannot detect repository by .git/config. Please specify "repository" in the package.json (https://docs.npmjs.com/files/package.json#repository).\nPlease see https://github.com/electron-userland/electron-builder/wiki/Publishing-Artifacts`) + throw new Error(message) } let owner = publishConfig.owner diff --git a/packages/electron-builder/src/util/readPackageJson.ts b/packages/electron-builder/src/util/readPackageJson.ts index 9b3dccaa4f0..53b11d2a60a 100644 --- a/packages/electron-builder/src/util/readPackageJson.ts +++ b/packages/electron-builder/src/util/readPackageJson.ts @@ -1,4 +1,5 @@ -import { extractFile } from "asar-electron-builder" +import Ajv from "ajv" +import { extractFile } from "asar" import { log, warn } from "electron-builder-util/out/log" import { readFile, readJson } from "fs-extra-p" import { safeLoad } from "js-yaml" @@ -130,7 +131,28 @@ function findFromElectronPrebuilt(packageData: any): any { return null } -export function normaliseErrorMessages(errors: Array) { +let validatorPromise: Promise | null = null + +async function createConfigValidator() { + const ajv = new Ajv({allErrors: true}) + ajv.addMetaSchema(require("ajv/lib/refs/json-schema-draft-04.json")) + require("ajv-keywords")(ajv, ["typeof"]) + const schema = await readJson(path.join(__dirname, "..", "..", "scheme.json")) + return ajv.compile(schema) +} + +export async function validateConfig(config: Config) { + if (validatorPromise == null) { + validatorPromise = createConfigValidator() + } + + const validator = await validatorPromise + if (!validator(config)) { + throw new Error("Config is invalid:\n" + JSON.stringify(normaliseErrorMessages(validator.errors!), null, 2) + "\n\nRaw validation errors: " + JSON.stringify(validator.errors, null, 2)) + } +} + +function normaliseErrorMessages(errors: Array) { const result: any = Object.create(null) for (const e of errors) { if (e.keyword === "type" && (e.params).type === "null") { diff --git a/test/out/__snapshots__/BuildTest.js.snap b/test/out/__snapshots__/BuildTest.js.snap index 0386358bc6a..ff86a6619c6 100644 --- a/test/out/__snapshots__/BuildTest.js.snap +++ b/test/out/__snapshots__/BuildTest.js.snap @@ -256,25 +256,6 @@ Array [ ] `; -exports[`name in the build 1`] = ` -"Config is invalid: -{ - \\"name\\": \\"Unknown option\\" -} - -Raw validation errors: [ - { - \\"keyword\\": \\"additionalProperties\\", - \\"dataPath\\": \\"\\", - \\"schemaPath\\": \\"#/additionalProperties\\", - \\"params\\": { - \\"additionalProperty\\": \\"name\\" - }, - \\"message\\": \\"should NOT have additional properties\\" - } -]" -`; - exports[`scheme validation 1`] = ` "Config is invalid: { diff --git a/test/src/BuildTest.ts b/test/src/BuildTest.ts index fd62cef1917..990a72ad134 100644 --- a/test/src/BuildTest.ts +++ b/test/src/BuildTest.ts @@ -1,6 +1,6 @@ -import { extractFile } from "asar-electron-builder" +import { extractFile } from "asar" import BluebirdPromise from "bluebird-lst" -import { Arch, BuildOptions, DIR_TARGET, PackagerOptions, Platform } from "electron-builder" +import { Arch, BuildOptions, DIR_TARGET, Platform } from "electron-builder" import { build, normalizeOptions } from "electron-builder/out/builder" import { createYargs } from "electron-builder/out/cli/cliOptions" import { checkWineVersion } from "electron-builder/out/packager" @@ -9,7 +9,9 @@ import isCi from "is-ci" import * as path from "path" import { ELECTRON_VERSION } from "./helpers/config" import { assertThat } from "./helpers/fileAssert" -import { allPlatforms, app, appThrows, appTwoThrows, assertPack, getPossiblePlatforms, modifyPackageJson, packageJson } from "./helpers/packTester" +import { allPlatforms, app, appThrows, appTwo, appTwoThrows, assertPack, getPossiblePlatforms, modifyPackageJson, packageJson } from "./helpers/packTester" + +const linuxDirTarget = Platform.LINUX.createTarget(DIR_TARGET) test("cli", async () => { const yargs = createYargs() @@ -80,7 +82,7 @@ test.ifNotWindows("custom buildResources and output dirs: mac", createBuildResou test.ifNotCiMac("custom buildResources and output dirs: win", createBuildResourcesTest(Platform.WINDOWS)) test.ifNotWindows("custom buildResources and output dirs: linux", createBuildResourcesTest(Platform.LINUX)) -test("build in the app package.json", appTwoThrows(allPlatforms(), { +test("build in the app package.json", appTwoThrows(linuxDirTarget, { projectDirCreated: it => modifyPackageJson(it, data => { data.build = { "iconUrl": "bar", @@ -88,16 +90,14 @@ test("build in the app package.json", appTwoThrows(allPlatforms(), { }, true) })) -test("name in the build", appThrows(currentPlatform(), {projectDirCreated: packageJson(it => it.build = {"name": "Cool App"})})) - -test("relative index", () => assertPack("test-app", allPlatforms(false), { +test("relative index", appTwo(allPlatforms(false), { projectDirCreated: projectDir => modifyPackageJson(projectDir, data => { data.main = "./index.js" }, true) })) it.ifDevOrLinuxCi("electron version from electron-prebuilt dependency", app({ - targets: Platform.LINUX.createTarget(DIR_TARGET), + targets: linuxDirTarget, }, { projectDirCreated: projectDir => BluebirdPromise.all([ outputJson(path.join(projectDir, "node_modules", "electron-prebuilt", "package.json"), { @@ -111,7 +111,7 @@ it.ifDevOrLinuxCi("electron version from electron-prebuilt dependency", app({ })) test.ifDevOrLinuxCi("electron version from electron dependency", app({ - targets: Platform.LINUX.createTarget(DIR_TARGET), + targets: linuxDirTarget, }, { projectDirCreated: projectDir => BluebirdPromise.all([ outputJson(path.join(projectDir, "node_modules", "electron", "package.json"), { @@ -125,7 +125,7 @@ test.ifDevOrLinuxCi("electron version from electron dependency", app({ })) test.ifDevOrLinuxCi("electron version from build", app({ - targets: Platform.LINUX.createTarget(DIR_TARGET), + targets: linuxDirTarget, }, { projectDirCreated: projectDir => modifyPackageJson(projectDir, data => { data.devDependencies = {} @@ -133,12 +133,12 @@ test.ifDevOrLinuxCi("electron version from build", app({ }) })) -test("www as default dir", () => assertPack("test-app", currentPlatform(), { +test("www as default dir", appTwo(Platform.current().createTarget(DIR_TARGET), { projectDirCreated: projectDir => move(path.join(projectDir, "app"), path.join(projectDir, "www")) })) test("afterPack", () => { - const targets = isCi ? Platform.fromString(process.platform).createTarget(DIR_TARGET) : getPossiblePlatforms(DIR_TARGET) + const targets = isCi ? Platform.current().createTarget(DIR_TARGET) : getPossiblePlatforms(DIR_TARGET) let called = 0 return assertPack("test-app-one", { targets: targets, @@ -156,7 +156,7 @@ test("afterPack", () => { }) test("beforeBuild", () => { - const targets = isCi ? Platform.fromString(process.platform).createTarget(DIR_TARGET) : getPossiblePlatforms(DIR_TARGET) + const targets = isCi ? Platform.current().createTarget(DIR_TARGET) : getPossiblePlatforms(DIR_TARGET) let called = 0 return assertPack("test-app-one", { targets: targets, @@ -174,39 +174,31 @@ test("beforeBuild", () => { }) }) -test.ifDevOrLinuxCi("smart unpack", () => { - return assertPack("test-app-one", { - targets: Platform.LINUX.createTarget(DIR_TARGET), - }, { - npmInstallBefore: true, - projectDirCreated: packageJson(it => { - it.dependencies = { - "debug": "^2.2.0", - "edge-cs": "^1.0.0" - } - }), - packed: context => { - expect(JSON.parse(extractFile(path.join(context.getResources(Platform.LINUX), "app.asar"), "node_modules/debug/package.json").toString())).toMatchObject({ - name: "debug" - }) - return BluebirdPromise.resolve() +test.ifDevOrLinuxCi("smart unpack", app({ + targets: linuxDirTarget, +}, { + npmInstallBefore: true, + projectDirCreated: packageJson(it => { + it.dependencies = { + "debug": "^2.2.0", + "edge-cs": "^1.0.0" } - }) -}) + }), + packed: context => { + expect(JSON.parse(extractFile(path.join(context.getResources(Platform.LINUX), "app.asar"), "node_modules/debug/package.json").toString())).toMatchObject({ + name: "debug" + }) + return BluebirdPromise.resolve() + } +})) test("wine version", async () => { await checkWineVersion(BluebirdPromise.resolve("1.9.23 (Staging)")) await checkWineVersion(BluebirdPromise.resolve("2.0-rc2")) }) -function currentPlatform(): PackagerOptions { - return { - targets: Platform.fromString(process.platform).createTarget(DIR_TARGET), - } -} - test.ifDevOrLinuxCi("prepackaged", app({ - targets: Platform.LINUX.createTarget(DIR_TARGET), + targets: linuxDirTarget, }, { packed: async (context) => { await build(normalizeOptions({ @@ -219,7 +211,7 @@ test.ifDevOrLinuxCi("prepackaged", app({ })) test.ifDevOrLinuxCi("scheme validation", appThrows({ - targets: Platform.LINUX.createTarget(DIR_TARGET), + targets: linuxDirTarget, config: { foo: 123, mac: { @@ -229,7 +221,7 @@ test.ifDevOrLinuxCi("scheme validation", appThrows({ })) test.ifDevOrLinuxCi("scheme validation 2", appThrows({ - targets: Platform.LINUX.createTarget(DIR_TARGET), + targets: linuxDirTarget, config: { appId: 123, }, diff --git a/test/src/extraMetadataTest.ts b/test/src/extraMetadataTest.ts index e94e802a014..12879699dce 100644 --- a/test/src/extraMetadataTest.ts +++ b/test/src/extraMetadataTest.ts @@ -1,4 +1,4 @@ -import { extractFile } from "asar-electron-builder" +import { extractFile } from "asar" import { DIR_TARGET, Platform } from "electron-builder" import * as path from "path" import { assertThat } from "./helpers/fileAssert" diff --git a/test/src/globTest.ts b/test/src/globTest.ts index 3e2acc0f744..293b58a4339 100644 --- a/test/src/globTest.ts +++ b/test/src/globTest.ts @@ -1,4 +1,4 @@ -import { statFile } from "asar-electron-builder" +import { statFile } from "asar" import BluebirdPromise from "bluebird-lst" import { DIR_TARGET, Platform } from "electron-builder" import { mkdirs, outputFile, symlink, writeFile } from "fs-extra-p" diff --git a/test/src/helpers/runTests.ts b/test/src/helpers/runTests.ts index 94ac44844a3..88c958ee2f5 100755 --- a/test/src/helpers/runTests.ts +++ b/test/src/helpers/runTests.ts @@ -128,6 +128,7 @@ async function runTests() { case "skipFpm": { testPathIgnorePatterns.push("[\\/]{1}fpmTest.js$") testPathIgnorePatterns.push("[\\/]{1}linuxArchiveTest.js$") + testPathIgnorePatterns.push("[\\/]{1}snapTest.js$") config.cacheDirectory += `-${suffix}` } break @@ -140,6 +141,7 @@ async function runTests() { case "skipArtifactPublisher": { testPathIgnorePatterns.push("[\\/]{1}ArtifactPublisherTest.js$") + testPathIgnorePatterns.push("[\\/]{1}httpRequestTest.js$") config.cacheDirectory += `-${suffix}` } break diff --git a/test/src/helpers/winHelper.ts b/test/src/helpers/winHelper.ts index 9581e2d61b7..ac552f77761 100644 --- a/test/src/helpers/winHelper.ts +++ b/test/src/helpers/winHelper.ts @@ -1,4 +1,4 @@ -import { extractFile } from "asar-electron-builder" +import { extractFile } from "asar" import BluebirdPromise from "bluebird-lst" import { Arch, Platform } from "electron-builder-core" import { walk } from "electron-builder-util/out/fs" diff --git a/typings/asar.d.ts b/typings/asar.d.ts index 2d8641a0b75..a750e93ba2c 100644 --- a/typings/asar.d.ts +++ b/typings/asar.d.ts @@ -1,4 +1,4 @@ -declare module "asar-electron-builder" { +declare module "asar" { interface AsarFileInfo { offset: number size: number diff --git a/yarn.lock b/yarn.lock index 13619781152..19fd3f05700 100644 --- a/yarn.lock +++ b/yarn.lock @@ -216,20 +216,31 @@ arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" -asar-electron-builder@^0.13.5: - version "0.13.5" - resolved "https://registry.yarnpkg.com/asar-electron-builder/-/asar-electron-builder-0.13.5.tgz#4ccd4d11fd7c9d3b3cffc782fde3deed9ef91af6" +asar@~0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/asar/-/asar-0.13.0.tgz#df33dd9d01bff842464d0d9f095740d4a62afb14" dependencies: chromium-pickle-js "^0.2.0" commander "^2.9.0" cuint "^0.2.1" - minimatch "^3.0.2" - mkdirp "^0.5.1" + glob "^6.0.4" + minimatch "^3.0.3" + mkdirp "^0.5.0" + mksnapshot "^0.3.0" + tmp "0.0.28" + +asn1@0.1.11: + version "0.1.11" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7" asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" +assert-plus@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" + assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" @@ -252,13 +263,17 @@ async@~0.2.6: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" +async@~0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" aws-sdk@^2.17.0: - version "2.17.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.17.0.tgz#b60351f37a77f04e5441fa900b0aea6df027aae3" + version "2.18.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.18.0.tgz#aee7ab04a714f512e98828ad2326606df7a3b2ef" dependencies: buffer "4.9.1" crypto-browserify "1.0.9" @@ -270,6 +285,10 @@ aws-sdk@^2.17.0: xml2js "0.4.15" xmlbuilder "2.6.2" +aws-sign2@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz#c57103f7a17fc037f02d7c2e64b602ea223f7d63" + aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" @@ -542,12 +561,22 @@ bl@^1.0.0: dependencies: readable-stream "^2.0.5" +bl@~0.9.0: + version "0.9.5" + resolved "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz#c06b797af085ea00bc527afc8efcf11de2232054" + dependencies: + readable-stream "~1.0.26" + bluebird-lst@^1.0.0, bluebird-lst@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.1.tgz#2b666b20bb1c1902e6b7b352d9c0fbf56830b5a3" dependencies: bluebird "^3.4.7" +bluebird@^2.9.30: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + bluebird@^3.4.7, bluebird@~3.4.6: version "3.4.7" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" @@ -676,6 +705,10 @@ caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" +caseless@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.9.0.tgz#b7b65ce6bf1413886539cfd533f0b30effa9cf88" + catharsis@~0.8.8: version "0.8.8" resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.8.tgz#693479f43aac549d806bd73e924cd0d944951a06" @@ -782,11 +815,17 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" +combined-stream@~0.0.4, combined-stream@~0.0.5: + version "0.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz#0137e657baa5a7541c57ac37ac5fc07d73b4dc1f" + dependencies: + delayed-stream "0.0.5" + command-join@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/command-join/-/command-join-2.0.0.tgz#52e8b984f4872d952ff1bdc8b98397d27c7144cf" -commander@^2.9.0: +commander@^2.8.1, commander@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" dependencies: @@ -905,6 +944,10 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": dependencies: cssom "0.3.x" +ctype@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz#82c18c2461f74114ef16c135224ad0b9144ca12f" + cuint@^0.2.1, cuint@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" @@ -931,7 +974,7 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" -decompress-zip@^0.3.0: +decompress-zip@0.3.0, decompress-zip@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/decompress-zip/-/decompress-zip-0.3.0.tgz#ae3bcb7e34c65879adfe77e19c30f86602b4bdb0" dependencies: @@ -957,6 +1000,10 @@ default-require-extensions@^1.0.0: dependencies: strip-bom "^2.0.0" +delayed-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1249,10 +1296,18 @@ for-own@^0.1.4: dependencies: for-in "^0.1.5" -forever-agent@~0.6.1: +forever-agent@~0.6.0, forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +form-data@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.2.0.tgz#26f8bc26da6440e299cbdcfb69035c4f77a6e466" + dependencies: + async "~0.9.0" + combined-stream "~0.0.4" + mime-types "~2.0.3" + form-data@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" @@ -1268,6 +1323,16 @@ fs-extra-p@^4.0.2: bluebird-lst "^1.0.1" fs-extra "^2.0.0" +fs-extra@0.26.7: + version "0.26.7" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + fs-extra@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600" @@ -1320,6 +1385,16 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" @@ -1403,6 +1478,15 @@ handlebars@^4.0.3: optionalDependencies: uglify-js "^2.6" +har-validator@^1.4.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-1.8.0.tgz#d83842b0eb4c435960aeb108a067a3aa94c0eeb2" + dependencies: + bluebird "^2.9.30" + chalk "^1.0.0" + commander "^2.8.1" + is-my-json-valid "^2.12.0" + har-validator@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" @@ -1422,6 +1506,15 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" +hawk@~2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-2.3.1.tgz#1e731ce39447fa1d0f6d707f7bceebec0fd1ec1f" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" @@ -1452,6 +1545,14 @@ html-encoding-sniffer@^1.0.1: dependencies: whatwg-encoding "^1.0.1" +http-signature@~0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-0.10.1.tgz#4fbdac132559aa8323121e540779c0a012b27e66" + dependencies: + asn1 "0.1.11" + assert-plus "^0.1.5" + ctype "0.5.3" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -1581,7 +1682,7 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" -is-my-json-valid@^2.12.4: +is-my-json-valid@^2.12.0, is-my-json-valid@^2.12.4: version "2.15.0" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" dependencies: @@ -1662,7 +1763,7 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" -isstream@~0.1.2: +isstream@~0.1.1, isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -2020,7 +2121,7 @@ json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@~5.0.1: +json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -2056,7 +2157,7 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.0.2" -klaw@~1.3.0: +klaw@^1.0.0, klaw@~1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" optionalDependencies: @@ -2262,6 +2363,10 @@ micromatch@^2.1.5, micromatch@^2.3.11: parse-glob "^3.0.4" regex-cache "^0.4.2" +mime-db@~1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz#3d0c63180f458eb10d325aaa37d7c58ae312e9d7" + mime-db@~1.26.0: version "1.26.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" @@ -2272,6 +2377,12 @@ mime-types@^2.1.12, mime-types@~2.1.7: dependencies: mime-db "~1.26.0" +mime-types@~2.0.1, mime-types@~2.0.3: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz#310e159db23e077f8bb22b748dabfa4957140aa6" + dependencies: + mime-db "~1.12.0" + mime@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" @@ -2304,6 +2415,14 @@ mkpath@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz#7554a6f8d871834cc97b5462b122c4c124d6de91" +mksnapshot@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/mksnapshot/-/mksnapshot-0.3.0.tgz#32ea984ad6f532324c6a3fae6400876b85828407" + dependencies: + decompress-zip "0.3.0" + fs-extra "0.26.7" + request "2.55.0" + ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" @@ -2343,6 +2462,10 @@ node-status-codes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" +node-uuid@~1.4.0: + version "1.4.7" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" + nopt@^3.0.1: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -2394,6 +2517,10 @@ number-is-nan@^1.0.0: version "1.3.9" resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a" +oauth-sign@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.6.0.tgz#7dbeae44f6ca454e1f168451d630746735813ce3" + oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -2653,6 +2780,10 @@ q@^1.1.2: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" +qs@~2.4.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-2.4.2.tgz#f7ce788e5777df0b5010da7f7c4e73ba32470f5a" + qs@~6.3.0: version "6.3.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d" @@ -2726,6 +2857,15 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5: string_decoder "~0.10.x" util-deprecate "~1.0.1" +readable-stream@~1.0.26: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -2770,7 +2910,30 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.45.0, request@^2.79.0: +request@2.55.0, request@^2.45.0: + version "2.55.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.55.0.tgz#d75c1cdf679d76bb100f9bffe1fe551b5c24e93d" + dependencies: + aws-sign2 "~0.5.0" + bl "~0.9.0" + caseless "~0.9.0" + combined-stream "~0.0.5" + forever-agent "~0.6.0" + form-data "~0.2.0" + har-validator "^1.4.0" + hawk "~2.3.0" + http-signature "~0.10.0" + isstream "~0.1.1" + json-stringify-safe "~5.0.0" + mime-types "~2.0.1" + node-uuid "~1.4.0" + oauth-sign "~0.6.0" + qs "~2.4.0" + stringstream "~0.0.4" + tough-cookie ">=0.12.0" + tunnel-agent "~0.4.0" + +request@^2.79.0: version "2.79.0" resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" dependencies: @@ -2834,7 +2997,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@^2.4.3, rimraf@^2.4.4: +rimraf@^2.2.8, rimraf@^2.4.3, rimraf@^2.4.4: version "2.6.0" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.0.tgz#89b8a0fe432b9ff9ec9a925a00b6cdb3a91bbada" dependencies: @@ -3132,6 +3295,12 @@ timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" +tmp@0.0.28: + version "0.0.28" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120" + dependencies: + os-tmpdir "~1.0.1" + tmp@^0.0.31: version "0.0.31" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" @@ -3152,7 +3321,7 @@ touch@0.0.3: dependencies: nopt "~1.0.10" -tough-cookie@^2.3.2, tough-cookie@~2.3.0: +tough-cookie@>=0.12.0, tough-cookie@^2.3.2, tough-cookie@~2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" dependencies: @@ -3206,7 +3375,7 @@ tslint@^4.4.2: resolve "^1.1.7" update-notifier "^1.0.2" -tunnel-agent@^0.4.3, tunnel-agent@~0.4.1: +tunnel-agent@^0.4.3, tunnel-agent@~0.4.0, tunnel-agent@~0.4.1: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" @@ -3385,8 +3554,8 @@ whatwg-encoding@^1.0.1: iconv-lite "0.4.13" whatwg-url@^4.3.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.4.0.tgz#594f95781545c13934a62db40897c818cafa2e04" + version "4.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.5.0.tgz#79bb6f0e370a4dda1cbc8f3062a490cf8bbb09ea" dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0"