diff --git a/.gitignore b/.gitignore index 6f4cee6bc9e..d11e719c28b 100644 --- a/.gitignore +++ b/.gitignore @@ -15,15 +15,8 @@ dist/ /docs/.idea/ -/typings/browser/ -/typings/browser.d.ts -/typings/main.d.ts - .DS_Store -/test/typings/electron-builder.d.ts -/test/typings/electron-updater.d.ts - /packages/*/out/ /out/ # to not exclude .js.snap (jest snapshots) diff --git a/docs/Options.md b/docs/Options.md index 0cd4c23d665..791c3114373 100644 --- a/docs/Options.md +++ b/docs/Options.md @@ -247,6 +247,7 @@ To use Squirrel.Windows please install `electron-builder-squirrel-windows` depen | certificateFile |

The path to the *.pfx certificate you want to sign with. Please use it only if you cannot use env variable CSC_LINK (WIN_CSC_LINK) for some reason. Please see [Code Signing](https://github.com/electron-userland/electron-builder/wiki/Code-Signing).

| certificatePassword |

The password to the certificate provided in certificateFile. Please use it only if you cannot use env variable CSC_KEY_PASSWORD (WIN_CSC_KEY_PASSWORD) for some reason. Please see [Code Signing](https://github.com/electron-userland/electron-builder/wiki/Code-Signing).

| certificateSubjectName | The name of the subject of the signing certificate. Required only for EV Code Signing and works only on Windows. +| certificateSha1 | * The SHA1 hash of the signing certificate. The SHA1 hash is commonly specified when multiple certificates satisfy the criteria specified by the remaining switches. Works only on Windows. | rfc3161TimeStampServer | The URL of the RFC 3161 time stamp server. Defaults to `http://timestamp.comodoca.com/rfc3161`. | timeStampServer | The URL of the time stamp server. Defaults to `http://timestamp.verisign.com/scripts/timstamp.dll`. | publisherName |

[The publisher name](https://github.com/electron-userland/electron-builder/issues/1187#issuecomment-278972073), exactly as in your code signed certificate. Several names can be provided. Defaults to common name from your code signing certificate.

diff --git a/package.json b/package.json index a4621ea49b2..579ac42acbf 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "pretest": "node ./test/vendor/yarn.js compile && node ./test/vendor/yarn.js lint && node ./test/vendor/yarn.js lint-deps", "lint-deps": "node ./test/out/helpers/checkDeps.js", "///": "Please see https://github.com/electron-userland/electron-builder/blob/master/CONTRIBUTING.md#run-test-using-cli how to run particular test instead full (and very slow) run", - "test": "node ./test/out/helpers/runTests.js skipFpm skipSw skipArtifactPublisher", + "test": "node ./test/out/helpers/runTests.js skipFpm skipSw skipArtifactPublisher ALL_TESTS=false", "test-all": "node ./test/vendor/yarn.js pretest && node ./test/out/helpers/runTests.js", "test-linux": "docker run --rm -ti -v ${PWD}: /project -v ${PWD##*/}-node-modules:/project/node_modules -v ~/.electron:/root/.electron electronuserland/electron-builder:wine /bin/bash -c \"node ./test/vendor/yarn.js && node ./test/vendor/yarn.js test\"", "//": "Update wiki if docs changed. Update only if functionalily are generally available (latest release, not next)", @@ -28,8 +28,8 @@ "ajv": "^5.0.2-beta", "ajv-keywords": "^2.0.1-beta.0", "archiver": "^1.3.0", - "asar-electron-builder": "~0.14.2", - "aws-sdk": "^2.17.0", + "asar": "~0.13.0", + "aws-sdk": "^2.19.0", "bluebird-lst": "^1.0.1", "chalk": "^1.1.3", "chromium-pickle-js": "^0.2.0", @@ -79,7 +79,7 @@ "depcheck": "^0.6.7", "docdash": "https://github.com/develar/docdash.git", "electron-download-tf": "3.2.0", - "jest-cli": "^19.0.1", + "jest-cli": "^19.0.2", "jest-environment-node-debug": "^2.0.0", "jest-junit-reporter": "^1.0.1", "jsdoc": "^3.4.3", diff --git a/packages/electron-builder/package.json b/packages/electron-builder/package.json index fa1cdae6241..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.14.2", + "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/options/winOptions.ts b/packages/electron-builder/src/options/winOptions.ts index 9bec210c5d3..8d602ef68ea 100644 --- a/packages/electron-builder/src/options/winOptions.ts +++ b/packages/electron-builder/src/options/winOptions.ts @@ -47,6 +47,11 @@ export interface WinBuildOptions extends PlatformSpecificBuildOptions { */ readonly certificateSubjectName?: string + /** + * The SHA1 hash of the signing certificate. The SHA1 hash is commonly specified when multiple certificates satisfy the criteria specified by the remaining switches. Works only on Windows. + */ + readonly certificateSha1?: string + /** The URL of the RFC 3161 time stamp server. Defaults to `http://timestamp.comodoca.com/rfc3161`. */ diff --git a/packages/electron-builder/src/packager.ts b/packages/electron-builder/src/packager.ts index c98dfc0d139..d0b55257eb4 100644 --- a/packages/electron-builder/src/packager.ts +++ b/packages/electron-builder/src/packager.ts @@ -1,4 +1,4 @@ -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" diff --git a/packages/electron-builder/src/targets/appx.ts b/packages/electron-builder/src/targets/appx.ts index edb2f77da89..e762cdc160c 100644 --- a/packages/electron-builder/src/targets/appx.ts +++ b/packages/electron-builder/src/targets/appx.ts @@ -26,8 +26,7 @@ export default class AppXTarget extends Target { async build(appOutDir: string, arch: Arch): Promise { const packager = this.packager - const cscInfo = await packager.cscInfo - if (cscInfo == null) { + if ((await packager.cscInfo) == null) { throw new Error("AppX package must be signed, but certificate is not set, please see https://github.com/electron-userland/electron-builder/wiki/Code-Signing") } diff --git a/packages/electron-builder/src/util/readPackageJson.ts b/packages/electron-builder/src/util/readPackageJson.ts index d9057e8944a..53b11d2a60a 100644 --- a/packages/electron-builder/src/util/readPackageJson.ts +++ b/packages/electron-builder/src/util/readPackageJson.ts @@ -1,5 +1,5 @@ import Ajv from "ajv" -import { extractFile } from "asar-electron-builder" +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" diff --git a/packages/electron-builder/src/winPackager.ts b/packages/electron-builder/src/winPackager.ts index a3e8ed3f4f0..42bc24e940f 100644 --- a/packages/electron-builder/src/winPackager.ts +++ b/packages/electron-builder/src/winPackager.ts @@ -12,48 +12,44 @@ import { PlatformPackager } from "./platformPackager" import AppXTarget from "./targets/appx" import NsisTarget from "./targets/nsis" import { createCommonTarget, DIR_TARGET } from "./targets/targetFactory" -import { getSignVendorPath, sign, SignOptions } from "./windowsCodeSign" - -export interface FileCodeSigningInfo { - readonly file?: string | null - readonly password?: string | null - - readonly subjectName?: string | null -} +import { FileCodeSigningInfo, getSignVendorPath, sign, SignOptions } from "./windowsCodeSign" export class WinPackager extends PlatformPackager { readonly cscInfo = new Lazy(() => { - const subjectName = this.platformSpecificBuildOptions.certificateSubjectName - if (subjectName == null) { - const certificateFile = this.platformSpecificBuildOptions.certificateFile - if (certificateFile != null) { - const certificatePassword = this.getCscPassword() - return BluebirdPromise.resolve({ - file: certificateFile, - password: certificatePassword == null ? null : certificatePassword.trim(), - }) - } - else { - const cscLink = process.env.WIN_CSC_LINK || this.packagerOptions.cscLink - if (cscLink != null) { - return downloadCertificate(cscLink, this.info.tempDirManager) - .then(path => { - return { - file: path, - password: this.getCscPassword(), - } - }) - } - else { - return BluebirdPromise.resolve(null) - } - } + const platformSpecificBuildOptions = this.platformSpecificBuildOptions + const subjectName = platformSpecificBuildOptions.certificateSubjectName + if (subjectName != null) { + return BluebirdPromise.resolve({subjectName}) } - else { + + const certificateSha1 = platformSpecificBuildOptions.certificateSha1 + if (certificateSha1 != null) { + return BluebirdPromise.resolve({certificateSha1}) + } + + const certificateFile = platformSpecificBuildOptions.certificateFile + if (certificateFile != null) { + const certificatePassword = this.getCscPassword() return BluebirdPromise.resolve({ - subjectName: subjectName + file: certificateFile, + password: certificatePassword == null ? null : certificatePassword.trim(), }) } + else { + const cscLink = process.env.WIN_CSC_LINK || this.packagerOptions.cscLink + if (cscLink != null) { + return downloadCertificate(cscLink, this.info.tempDirManager) + .then(path => { + return { + file: path, + password: this.getCscPassword(), + } + }) + } + else { + return BluebirdPromise.resolve(null) + } + } }) private iconPath: Promise | null @@ -171,7 +167,12 @@ export class WinPackager extends PlatformPackager { logMessagePrefix = `Signing ${path.basename(file)}` } if (certFile == null) { - log(`${logMessagePrefix} (subject name: "${cscInfo.subjectName}")`) + if (cscInfo.subjectName == null) { + log(`${logMessagePrefix} (certificate SHA1: "${cscInfo.certificateSha1}")`) + } + else { + log(`${logMessagePrefix} (certificate subject name: "${cscInfo.subjectName}")`) + } } else { log(`${logMessagePrefix} (certificate file: "${certFile}")`) @@ -181,12 +182,14 @@ export class WinPackager extends PlatformPackager { path: file, cert: certFile, - subjectName: cscInfo.subjectName, password: cscInfo.password, name: this.appInfo.productName, site: await this.appInfo.computePackageUrl(), - options: this.platformSpecificBuildOptions, + options: Object.assign({}, this.platformSpecificBuildOptions, { + certificateSubjectName: cscInfo.subjectName, + certificateSha1: cscInfo.certificateSha1, + }), }) } diff --git a/packages/electron-builder/src/windowsCodeSign.ts b/packages/electron-builder/src/windowsCodeSign.ts index 9a3da7f23db..291111a40e2 100644 --- a/packages/electron-builder/src/windowsCodeSign.ts +++ b/packages/electron-builder/src/windowsCodeSign.ts @@ -1,9 +1,9 @@ import { exec } from "electron-builder-util" -import { rename } from "fs-extra-p" -import * as path from "path" -import { release } from "os" import { getBinFromBintray } from "electron-builder-util/out/binDownload" +import { rename } from "fs-extra-p" import isCi from "is-ci" +import { release } from "os" +import * as path from "path" import { WinBuildOptions } from "./options/winOptions" const TOOLS_VERSION = "1.7.0" @@ -13,11 +13,18 @@ export function getSignVendorPath() { return getBinFromBintray("winCodeSign", TOOLS_VERSION, "a34a60e74d02b81d0303e498f03c70ce0133f908b671f62ec32896db5cd0a716") } +export interface FileCodeSigningInfo { + readonly file?: string | null + readonly password?: string | null + + readonly subjectName?: string | null + readonly certificateSha1?: string | null +} + export interface SignOptions { readonly path: string readonly cert?: string | null - readonly subjectName?: string | null readonly name?: string | null readonly password?: string | null @@ -75,10 +82,17 @@ async function spawnSign(options: SignOptions, inputPath: string, outputPath: st const certificateFile = options.cert if (certificateFile == null) { + const subjectName = options.options.certificateSubjectName if (process.platform !== "win32") { - throw new Error("certificateSubjectName supported only on Windows") + throw new Error(`${subjectName == null ? "certificateSha1" : "certificateSubjectName"} supported only on Windows`) + } + + if (subjectName == null) { + args.push("/sha1", options.options.certificateSha1!) + } + else { + args.push("/n", subjectName) } - args.push("/n", options.subjectName!) } else { const certExtension = path.extname(certificateFile) diff --git a/packages/electron-publisher-s3/package.json b/packages/electron-publisher-s3/package.json index 3a181e0b1ef..25fbefb7148 100644 --- a/packages/electron-publisher-s3/package.json +++ b/packages/electron-publisher-s3/package.json @@ -12,7 +12,7 @@ ], "dependencies": { "fs-extra-p": "^4.0.2", - "aws-sdk": "^2.17.0", + "aws-sdk": "^2.19.0", "mime": "^1.3.4", "electron-publish": "~0.0.0-semantic-release", "electron-builder-util": "~0.0.0-semantic-release" diff --git a/test/jestSetup.js b/test/jestSetup.js index bb92c5591f1..8e105272dd2 100644 --- a/test/jestSetup.js +++ b/test/jestSetup.js @@ -9,6 +9,11 @@ const isWindows = process.platform === "win32" jasmine.DEFAULT_TIMEOUT_INTERVAL = (isWindows ? 30 : 10) * 1000 * 60 const skip = test.skip +const skipSuite = describe.skip + +const isAllTests = process.env.ALL_TESTS === undefined || process.env.ALL_TESTS === "true" +describe.ifAll = isAllTests ? describe : skipSuite +test.ifAll = isAllTests ? test : skip const isMac = process.platform === "darwin" test.ifMac = isMac ? test : skip diff --git a/test/out/__snapshots__/BuildTest.js.snap b/test/out/__snapshots__/BuildTest.js.snap index ff86a6619c6..4321c110971 100644 --- a/test/out/__snapshots__/BuildTest.js.snap +++ b/test/out/__snapshots__/BuildTest.js.snap @@ -238,25 +238,25 @@ Object { } `; -exports[`custom buildResources and output dirs: linux 1`] = ` +exports[`sign custom buildResources and output dirs: linux 1`] = ` Array [ "TestApp-1.1.0-x86_64.AppImage", ] `; -exports[`custom buildResources and output dirs: win 1`] = ` +exports[`sign custom buildResources and output dirs: win 1`] = ` Array [ "Test App ßW Setup 1.1.0.exe", ] `; -exports[`custom buildResources and output dirs: win 2`] = ` +exports[`sign custom buildResources and output dirs: win 2`] = ` Array [ "TestApp-Setup-1.1.0.exe", ] `; -exports[`scheme validation 1`] = ` +exports[`sign scheme validation 1`] = ` "Config is invalid: { \\"foo\\": \\"Unknown option\\", @@ -306,7 +306,7 @@ Raw validation errors: [ ]" `; -exports[`scheme validation 2 1`] = ` +exports[`sign scheme validation 2 1`] = ` "Config is invalid: { \\"appId\\": \\"Should be null,string\\" diff --git a/test/out/windows/__snapshots__/winPackagerTest.js.snap b/test/out/windows/__snapshots__/winPackagerTest.js.snap new file mode 100644 index 00000000000..cd8443ee03a --- /dev/null +++ b/test/out/windows/__snapshots__/winPackagerTest.js.snap @@ -0,0 +1,11 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`icon < 256 1`] = `"Windows icon size must be at least 256x256, please fix \\"/icon.ico\\""`; + +exports[`icon not an image 1`] = `"Windows icon is not valid ico file, please fix \\"/icon.ico\\""`; + +exports[`sign certificateSha1 1`] = `"certificateSha1 supported only on Windows"`; + +exports[`sign ev 1`] = `"certificateSubjectName supported only on Windows"`; + +exports[`sign forceCodeSigning 1`] = `"App is not signed and \\"forceCodeSigning\\" is set to true, please ensure that code signing configuration is correct, please see https://github.com/electron-userland/electron-builder/wiki/Code-Signing"`; diff --git a/test/src/BuildTest.ts b/test/src/BuildTest.ts index 5a3752de793..f9f50303dc6 100644 --- a/test/src/BuildTest.ts +++ b/test/src/BuildTest.ts @@ -1,4 +1,4 @@ -import { extractFile } from "asar-electron-builder" +import { extractFile } from "asar" import BluebirdPromise from "bluebird-lst" import { Arch, BuildOptions, DIR_TARGET, Platform } from "electron-builder" import { build, normalizeOptions } from "electron-builder/out/builder" @@ -78,10 +78,6 @@ function createBuildResourcesTest(platform: Platform) { }) } -test.ifNotWindows("custom buildResources and output dirs: mac", createBuildResourcesTest(Platform.MAC)) -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(linuxDirTarget, { projectDirCreated: it => modifyPackageJson(it, data => { data.build = { @@ -199,32 +195,38 @@ test("wine version", async () => { await checkWineVersion(BluebirdPromise.resolve("2.0-rc2")) }) -test.ifDevOrLinuxCi("prepackaged", app({ - targets: linuxDirTarget, -}, { - packed: async (context) => { - await build(normalizeOptions({ - prepackaged: path.join(context.outDir, "linux-unpacked"), - project: context.projectDir, - linux: ["deb"] - })) - await assertThat(path.join(context.projectDir, "dist", "TestApp_1.1.0_amd64.deb")).isFile() - } -})) +describe.ifAll("sign", () => { + test.ifNotWindows("custom buildResources and output dirs: mac", createBuildResourcesTest(Platform.MAC)) + test.ifNotCiMac("custom buildResources and output dirs: win", createBuildResourcesTest(Platform.WINDOWS)) + test.ifNotWindows("custom buildResources and output dirs: linux", createBuildResourcesTest(Platform.LINUX)) -test.ifDevOrLinuxCi("scheme validation", appThrows({ - targets: linuxDirTarget, - config: { - foo: 123, - mac: { - foo: 12123, + test.ifDevOrLinuxCi("prepackaged", app({ + targets: linuxDirTarget, + }, { + packed: async (context) => { + await build(normalizeOptions({ + prepackaged: path.join(context.outDir, "linux-unpacked"), + project: context.projectDir, + linux: ["deb"] + })) + await assertThat(path.join(context.projectDir, "dist", "TestApp_1.1.0_amd64.deb")).isFile() + } + })) + + test.ifDevOrLinuxCi("scheme validation", appThrows({ + targets: linuxDirTarget, + config: { + foo: 123, + mac: { + foo: 12123, + }, }, - }, -})) + })) -test.ifDevOrLinuxCi("scheme validation 2", appThrows({ - targets: linuxDirTarget, - config: { - appId: 123, - }, -})) + test.ifDevOrLinuxCi("scheme validation 2", appThrows({ + 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/config.ts b/test/src/helpers/config.ts index e192af17da6..5907b216a79 100644 --- a/test/src/helpers/config.ts +++ b/test/src/helpers/config.ts @@ -1,6 +1,6 @@ -import * as path from "path" -import { tmpdir } from "os" import { createHash } from "crypto" +import { tmpdir } from "os" +import * as path from "path" // reuse to avoid stale data (maybe not removed correctly on test stop) // use __dirname to allow run in parallel from different project clones @@ -9,5 +9,6 @@ import { createHash } from "crypto" docker: Error response from daemon: Mounts denied: o Docker. You can configure shared paths from Docker -> Preferences... -> File Sharing. */ -export const TEST_DIR = path.join(process.platform === "darwin" && !require("is-ci") ? "/tmp" : tmpdir(), `et-${createHash("md5").update(__dirname).digest("hex")}`) +const baseDir = process.env.ELECTRON_BUILDER_TEST_DIR || (process.platform === "darwin" && !require("is-ci") ? "/tmp" : tmpdir()) +export const TEST_DIR = path.join(baseDir, `et-${createHash("md5").update(__dirname).digest("hex")}`) export const ELECTRON_VERSION = "1.6.0" \ No newline at end of file diff --git a/test/src/helpers/runTests.ts b/test/src/helpers/runTests.ts index 88c958ee2f5..cc9276bc86d 100755 --- a/test/src/helpers/runTests.ts +++ b/test/src/helpers/runTests.ts @@ -121,6 +121,13 @@ async function runTests() { if ("runInBand" === scriptArg) { runInBand = true } + else if (scriptArg.includes("=")) { + const equalIndex = scriptArg.indexOf("=") + const envName = scriptArg.substring(0, equalIndex) + const envValue = scriptArg.substring(equalIndex + 1) + process.env[envName] = envValue + console.log(`Custom env ${envName}=${envValue}`) + } else if (scriptArg.startsWith("skip")) { if (!isCi) { const suffix = scriptArg.substring("skip".length) 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/test/src/windows/installerTest.ts b/test/src/windows/installerTest.ts index 8de8fc2314a..da5628707dd 100644 --- a/test/src/windows/installerTest.ts +++ b/test/src/windows/installerTest.ts @@ -1,9 +1,9 @@ -import { Platform, Arch } from "electron-builder" -import { assertPack, app, copyTestAsset } from "../helpers/packTester" -import * as path from "path" +import { Arch, Platform } from "electron-builder" import { archFromString } from "electron-builder-core" +import { readFile } from "fs-extra-p" import { safeLoad } from "js-yaml" -import { readFile } from "fs-extra-p"; +import * as path from "path" +import { app, assertPack, copyTestAsset } from "../helpers/packTester" import { doTest, expectUpdateMetadata } from "../helpers/winHelper" const nsisTarget = Platform.WINDOWS.createTarget(["nsis"]) @@ -89,7 +89,7 @@ test.ifNotCiMac("boring", app({ }, })) -test("allowToChangeInstallationDirectory", app({ +test.ifAll("allowToChangeInstallationDirectory", app({ targets: nsisTarget, appMetadata: { name: "test-custom-inst-dir", diff --git a/test/src/windows/oneClickInstallerTest.ts b/test/src/windows/oneClickInstallerTest.ts index f7e4de0aca3..c675d6a4ed1 100644 --- a/test/src/windows/oneClickInstallerTest.ts +++ b/test/src/windows/oneClickInstallerTest.ts @@ -102,7 +102,7 @@ test.ifDevOrLinuxCi("custom script", app({targets: nsisTarget}, { packed: context => assertThat(path.join(context.projectDir, "build", "customInstallerScript")).isFile(), })) -test("menuCategory", app({ +test.ifAll("menuCategory", app({ targets: Platform.WINDOWS.createTarget(["nsis"], Arch.ia32), appMetadata: { name: "test-menu-category", diff --git a/test/src/windows/winPackagerTest.ts b/test/src/windows/winPackagerTest.ts index 2fc0a350f3f..5fa88a0afb1 100755 --- a/test/src/windows/winPackagerTest.ts +++ b/test/src/windows/winPackagerTest.ts @@ -41,18 +41,31 @@ test.ifMac("custom icon", () => { }) }) -it.ifDevOrLinuxCi("ev", appThrows({ - targets: Platform.WINDOWS.createTarget(["dir"]), - config: { - win: { - certificateSubjectName: "ev", +describe.ifAll("sign", () => { + const windowsDirTarget = Platform.WINDOWS.createTarget(["dir"]) + + test.ifNotWindows("ev", appThrows({ + targets: windowsDirTarget, + config: { + win: { + certificateSubjectName: "ev", + } } - } -})) + })) -it.ifDevOrLinuxCi("forceCodeSigning", appThrows({ - targets: Platform.WINDOWS.createTarget(["dir"]), - config: { - forceCodeSigning: true, - } -})) \ No newline at end of file + test.ifNotWindows("certificateSha1", appThrows({ + targets: windowsDirTarget, + config: { + win: { + certificateSha1: "boo", + } + } + })) + + test("forceCodeSigning", appThrows({ + targets: windowsDirTarget, + config: { + forceCodeSigning: true, + } + })) +}) \ No newline at end of file diff --git a/test/typings/jest-ex.d.ts b/test/typings/jest-ex.d.ts index 69ed277ad77..f66dfde7132 100644 --- a/test/typings/jest-ex.d.ts +++ b/test/typings/jest-ex.d.ts @@ -11,6 +11,12 @@ declare module jest { ifDevOrLinuxCi: jest.It ifLinux: jest.It ifLinuxOrDevMac: jest.It + + ifAll: jest.It + } + + interface Describe { + ifAll: jest.Describe } interface Matchers { 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 a3ad3f37c99..33a74213af5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -216,19 +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.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/asar-electron-builder/-/asar-electron-builder-0.14.2.tgz#11d83db690b877ed0d319fe5de12284035347250" +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" - cuint "^0.2.2" + commander "^2.9.0" + cuint "^0.2.1" + glob "^6.0.4" minimatch "^3.0.3" - mkdirp "^0.5.1" + 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" @@ -251,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.18.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.18.0.tgz#aee7ab04a714f512e98828ad2326606df7a3b2ef" +aws-sdk@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.19.0.tgz#ad713ee121b930503fd11ecbfad43b630218e6fb" dependencies: buffer "4.9.1" crypto-browserify "1.0.9" @@ -269,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" @@ -511,8 +531,8 @@ babel-types@^6.18.0, babel-types@^6.22.0, babel-types@^6.23.0: to-fast-properties "^1.0.1" babylon@^6.1.21, babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e" + version "6.16.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" balanced-match@^0.4.1: version "0.4.2" @@ -541,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" @@ -675,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" @@ -781,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: @@ -904,7 +944,11 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": dependencies: cssom "0.3.x" -cuint@^0.2.2: +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" @@ -930,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: @@ -956,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" @@ -1248,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" @@ -1267,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" @@ -1319,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" @@ -1402,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" @@ -1421,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" @@ -1451,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" @@ -1493,8 +1595,8 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" inquirer@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.2.tgz#13caca98cc488e99c8de759a3404a6d0fe224ba6" + version "3.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.4.tgz#ed9588020edbcc40fc94c50761ad00dcf8598ff5" dependencies: ansi-escapes "^1.1.0" chalk "^1.0.0" @@ -1580,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: @@ -1661,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" @@ -1729,13 +1831,13 @@ istanbul-reports@^1.0.0: dependencies: handlebars "^4.0.3" -jest-changed-files@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-19.0.0.tgz#8c1a43a4ffccbcb8ae12e819104585adf2ed93a6" +jest-changed-files@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-19.0.2.tgz#16c54c84c3270be408e06d2e8af3f3e37a885824" -jest-cli@^19.0.1: - version "19.0.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-19.0.1.tgz#79630200c3a33a0b15e81b369cf60c35552722c8" +jest-cli@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-19.0.2.tgz#cc3620b62acac5f2d93a548cb6ef697d4ec85443" dependencies: ansi-escapes "^1.4.0" callsites "^2.0.0" @@ -1745,17 +1847,17 @@ jest-cli@^19.0.1: istanbul-api "^1.1.0-alpha.1" istanbul-lib-coverage "^1.0.0" istanbul-lib-instrument "^1.1.1" - jest-changed-files "^19.0.0" - jest-config "^19.0.1" - jest-environment-jsdom "^19.0.1" + jest-changed-files "^19.0.2" + jest-config "^19.0.2" + jest-environment-jsdom "^19.0.2" jest-haste-map "^19.0.0" - jest-jasmine2 "^19.0.1" + jest-jasmine2 "^19.0.2" jest-message-util "^19.0.0" jest-regex-util "^19.0.0" jest-resolve-dependencies "^19.0.0" - jest-runtime "^19.0.1" - jest-snapshot "^19.0.1" - jest-util "^19.0.1" + jest-runtime "^19.0.2" + jest-snapshot "^19.0.2" + jest-util "^19.0.2" micromatch "^2.3.11" node-notifier "^5.0.1" slash "^1.0.0" @@ -1765,17 +1867,17 @@ jest-cli@^19.0.1: worker-farm "^1.3.1" yargs "^6.3.0" -jest-config@^19.0.1: - version "19.0.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-19.0.1.tgz#a50698aca3b70949ff4e3898d339a13e166d8fb8" +jest-config@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-19.0.2.tgz#1b9bd2db0ddd16df61c2b10a54009e1768da6411" dependencies: chalk "^1.1.1" - jest-environment-jsdom "^19.0.1" - jest-environment-node "^19.0.1" - jest-jasmine2 "^19.0.1" + jest-environment-jsdom "^19.0.2" + jest-environment-node "^19.0.2" + jest-jasmine2 "^19.0.2" jest-regex-util "^19.0.0" - jest-resolve "^19.0.0" - jest-validate "^19.0.0" + jest-resolve "^19.0.2" + jest-validate "^19.0.2" pretty-format "^19.0.0" jest-diff@^19.0.0: @@ -1787,24 +1889,24 @@ jest-diff@^19.0.0: jest-matcher-utils "^19.0.0" pretty-format "^19.0.0" -jest-environment-jsdom@^19.0.1: - version "19.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-19.0.1.tgz#baf16bb10cbd54f3b9a3edb8fd88d11282b11f99" +jest-environment-jsdom@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-19.0.2.tgz#ceda859c4a4b94ab35e4de7dab54b926f293e4a3" dependencies: jest-mock "^19.0.0" - jest-util "^19.0.1" + jest-util "^19.0.2" jsdom "^9.11.0" jest-environment-node-debug@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/jest-environment-node-debug/-/jest-environment-node-debug-2.0.0.tgz#5ef098942fec1b6af5ee4841f4f8a2ff419562f9" -jest-environment-node@^19.0.1: - version "19.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-19.0.1.tgz#5a9170437bb8b99da139d79f01de20e8e37a3e34" +jest-environment-node@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-19.0.2.tgz#6e84079db87ed21d0c05e1f9669f207b116fe99b" dependencies: jest-mock "^19.0.0" - jest-util "^19.0.1" + jest-util "^19.0.2" jest-file-exists@^19.0.0: version "19.0.0" @@ -1820,15 +1922,15 @@ jest-haste-map@^19.0.0: sane "~1.5.0" worker-farm "^1.3.1" -jest-jasmine2@^19.0.1: - version "19.0.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-19.0.1.tgz#9a9ee34573fc15c4856ec32e65a0865ee878756e" +jest-jasmine2@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-19.0.2.tgz#167991ac825981fb1a800af126e83afcca832c73" dependencies: graceful-fs "^4.1.6" jest-matcher-utils "^19.0.0" jest-matchers "^19.0.0" jest-message-util "^19.0.0" - jest-snapshot "^19.0.1" + jest-snapshot "^19.0.2" jest-junit-reporter@^1.0.1: version "1.0.1" @@ -1873,62 +1975,62 @@ jest-resolve-dependencies@^19.0.0: dependencies: jest-file-exists "^19.0.0" -jest-resolve@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-19.0.0.tgz#83e6166d58ad9e31c8503e54b215e30ca56cb5ae" +jest-resolve@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-19.0.2.tgz#5793575de4f07aec32f7d7ff0c6c181963eefb3c" dependencies: browser-resolve "^1.11.2" jest-haste-map "^19.0.0" resolve "^1.2.0" -jest-runtime@^19.0.1: - version "19.0.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-19.0.1.tgz#7b584cbc690a500d9da148aba6a109bc9266a6b1" +jest-runtime@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-19.0.2.tgz#d9a43e72de416d27d196fd9c7940d98fe6685407" dependencies: babel-core "^6.0.0" babel-jest "^19.0.0" babel-plugin-istanbul "^4.0.0" chalk "^1.1.3" graceful-fs "^4.1.6" - jest-config "^19.0.1" + jest-config "^19.0.2" jest-file-exists "^19.0.0" jest-haste-map "^19.0.0" jest-regex-util "^19.0.0" - jest-resolve "^19.0.0" - jest-util "^19.0.1" + jest-resolve "^19.0.2" + jest-util "^19.0.2" json-stable-stringify "^1.0.1" micromatch "^2.3.11" strip-bom "3.0.0" yargs "^6.3.0" -jest-snapshot@^19.0.1: - version "19.0.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-19.0.1.tgz#5b8161f737b63b6973f7e6e222b473970b5a69d1" +jest-snapshot@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-19.0.2.tgz#9c1b216214f7187c38bfd5c70b1efab16b0ff50b" dependencies: chalk "^1.1.3" jest-diff "^19.0.0" jest-file-exists "^19.0.0" jest-matcher-utils "^19.0.0" - jest-util "^19.0.1" + jest-util "^19.0.2" natural-compare "^1.4.0" pretty-format "^19.0.0" -jest-util@^19.0.1: - version "19.0.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-19.0.1.tgz#27235211a21280b42bc7c84d8f69e4e07c72cf9f" +jest-util@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-19.0.2.tgz#e0a0232a2ab9e6b2b53668bdb3534c2b5977ed41" dependencies: chalk "^1.1.1" graceful-fs "^4.1.6" jest-file-exists "^19.0.0" jest-message-util "^19.0.0" jest-mock "^19.0.0" - jest-validate "^19.0.0" + jest-validate "^19.0.2" leven "^2.0.0" mkdirp "^0.5.1" -jest-validate@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-19.0.0.tgz#8c6318a20ecfeaba0ba5378bfbb8277abded4173" +jest-validate@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-19.0.2.tgz#dc534df5f1278d5b63df32b14241d4dbf7244c0c" dependencies: chalk "^1.1.1" jest-matcher-utils "^19.0.0" @@ -2019,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" @@ -2055,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: @@ -2261,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" @@ -2271,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" @@ -2303,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" @@ -2342,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" @@ -2393,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" @@ -2652,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" @@ -2725,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" @@ -2769,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: @@ -2817,8 +2981,10 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" resolve@^1.1.7, resolve@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" + version "1.3.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.1.tgz#5d0a1632609b6b00a22284293db1d5d973676314" + dependencies: + path-parse "^1.0.5" restore-cursor@^2.0.0: version "2.0.0" @@ -2833,9 +2999,9 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@^2.4.3, rimraf@^2.4.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.0.tgz#89b8a0fe432b9ff9ec9a925a00b6cdb3a91bbada" +rimraf@^2.2.8, rimraf@^2.4.3, rimraf@^2.4.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" dependencies: glob "^7.0.5" @@ -3131,6 +3297,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" @@ -3151,7 +3323,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: @@ -3205,7 +3377,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"