From 17ac61964d01df46a15338867aec00dc605f1b5b Mon Sep 17 00:00:00 2001 From: develar Date: Sat, 22 Apr 2017 16:53:20 +0200 Subject: [PATCH] fix(electron-updater): Incorrect comparison of version numbers (electron-updater) Close #1488 --- docs/Home.md | 25 ++++++ package.json | 12 +-- packages/electron-builder-http/package.json | 2 +- packages/electron-builder-util/package.json | 2 +- packages/electron-builder/package.json | 2 +- .../src/publish/PublishManager.ts | 3 +- packages/electron-publisher-s3/package.json | 2 +- packages/electron-updater/src/AppUpdater.ts | 10 ++- .../out/__snapshots__/nsisUpdaterTest.js.snap | 14 +-- test/src/nsisUpdaterTest.ts | 81 ++++++++--------- yarn.lock | 90 ++++++++++--------- 11 files changed, 135 insertions(+), 108 deletions(-) create mode 100644 docs/Home.md diff --git a/docs/Home.md b/docs/Home.md new file mode 100644 index 00000000000..d97ad7e5b46 --- /dev/null +++ b/docs/Home.md @@ -0,0 +1,25 @@ +**Basics** + +* [[Options]] +* [[Auto Update]] +* [[Code Signing]] +* [[Publishing Artifacts]] +* [[Multi Platform Build]] +* [[NSIS]] +* [[Docker]] +* [[Donations]] + +**Tutorials** + +* [[Loading App Dependencies Manually]] +* [[Two package.json Structure]] +* [[macOS Kernel Extensions]] + +**Programmatic API** + +* [[electron-builder]] +* [[electron-builder-core]] +* [[electron-builder-util]] +* [[electron-builder-http]] +* [[electron-publish]] +* [[electron-updater]] diff --git a/package.json b/package.json index d65c52a6626..9c20a91e3b4 100644 --- a/package.json +++ b/package.json @@ -31,12 +31,12 @@ "ajv": "^5.0.4-beta.2", "ajv-keywords": "^2.0.1-beta.2", "archiver": "^1.3.0", - "aws-sdk": "^2.41.0", + "aws-sdk": "^2.45.0", "bluebird-lst": "^1.0.2", "chalk": "^1.1.3", "chromium-pickle-js": "^0.2.0", "cuint": "^0.2.2", - "debug": "^2.6.3", + "debug": "^2.6.4", "electron-download-tf": "4.2.1", "electron-is-dev": "^0.1.2", "electron-osx-sign": "0.4.4", @@ -50,7 +50,7 @@ "minimatch": "^3.0.3", "node-emoji": "^1.5.1", "node-forge": "^0.7.1", - "normalize-package-data": "^2.3.6", + "normalize-package-data": "^2.3.8", "parse-color": "^1.0.0", "plist": "^2.0.1", "sanitize-filename": "^1.6.1", @@ -64,10 +64,10 @@ "yargs": "^7.1.0" }, "devDependencies": { - "@types/electron": "^1.4.35", + "@types/electron": "^1.4.37", "@types/ini": "^1.3.29", "@types/jest": "^19.2.2", - "@types/js-yaml": "^3.5.29", + "@types/js-yaml": "^3.5.30", "@types/node-forge": "^0.6.8", "@types/source-map-support": "^0.2.28", "@types/xml2js": "^0.0.33", @@ -85,7 +85,7 @@ "globby": "^6.1.0", "jest-cli": "^19.0.2", "jest-environment-node-debug": "^2.0.0", - "jest-junit": "^1.4.0", + "jest-junit": "^1.5.1", "jsdoc-to-markdown": "^3.0.0", "path-sort": "^0.1.0", "source-map-support": "^0.4.14", diff --git a/packages/electron-builder-http/package.json b/packages/electron-builder-http/package.json index fefa184de4b..11be37047d4 100644 --- a/packages/electron-builder-http/package.json +++ b/packages/electron-builder-http/package.json @@ -12,7 +12,7 @@ ], "//": "client can also install js-yaml to load yaml", "dependencies": { - "debug": "2.6.3", + "debug": "2.6.4", "fs-extra-p": "^4.1.0" }, "typings": "./out/electron-builder-http.d.ts" diff --git a/packages/electron-builder-util/package.json b/packages/electron-builder-util/package.json index 86c7f97e1f2..f6cc6ef4503 100644 --- a/packages/electron-builder-util/package.json +++ b/packages/electron-builder-util/package.json @@ -16,7 +16,7 @@ "stat-mode": "^0.2.2", "bluebird-lst": "^1.0.2", "chalk": "^1.1.3", - "debug": "2.6.3", + "debug": "2.6.4", "node-emoji": "^1.5.1", "electron-builder-http": "~0.0.0-semantic-release", "source-map-support": "^0.4.14", diff --git a/packages/electron-builder/package.json b/packages/electron-builder/package.json index a4e732ff21b..557f1798a09 100644 --- a/packages/electron-builder/package.json +++ b/packages/electron-builder/package.json @@ -64,7 +64,7 @@ "js-yaml": "^3.8.3", "minimatch": "^3.0.3", "node-forge": "^0.7.1", - "normalize-package-data": "^2.3.6", + "normalize-package-data": "^2.3.8", "parse-color": "^1.0.0", "plist": "^2.0.1", "sanitize-filename": "^1.6.1", diff --git a/packages/electron-builder/src/publish/PublishManager.ts b/packages/electron-builder/src/publish/PublishManager.ts index e213cdf926f..09c0082d2eb 100644 --- a/packages/electron-builder/src/publish/PublishManager.ts +++ b/packages/electron-builder/src/publish/PublishManager.ts @@ -15,6 +15,7 @@ import isCi from "is-ci" import { safeDump } from "js-yaml" import * as path from "path" import { prerelease } from "semver" +import { WriteStream as TtyWriteStream } from "tty" import * as url from "url" import { Packager } from "../packager" import { ArtifactCreated, BuildInfo } from "../packagerApi" @@ -29,7 +30,7 @@ export class PublishManager implements PublishContext { private isPublish = false - readonly progress = (process.stdout).isTTY ? new MultiProgress() : null + readonly progress = (process.stdout).isTTY ? new MultiProgress() : null constructor(packager: Packager, private readonly publishOptions: PublishOptions, readonly cancellationToken: CancellationToken) { if (!isPullRequest()) { diff --git a/packages/electron-publisher-s3/package.json b/packages/electron-publisher-s3/package.json index fccf28ce189..ccd2ff01903 100644 --- a/packages/electron-publisher-s3/package.json +++ b/packages/electron-publisher-s3/package.json @@ -12,7 +12,7 @@ ], "dependencies": { "fs-extra-p": "^4.1.0", - "aws-sdk": "^2.41.0", + "aws-sdk": "^2.45.0", "mime": "^1.3.4", "electron-publish": "~0.0.0-semantic-release", "electron-builder-util": "~0.0.0-semantic-release" diff --git a/packages/electron-updater/src/AppUpdater.ts b/packages/electron-updater/src/AppUpdater.ts index 8fc7d5d01fe..da280773d8c 100644 --- a/packages/electron-updater/src/AppUpdater.ts +++ b/packages/electron-updater/src/AppUpdater.ts @@ -117,8 +117,7 @@ export abstract class AppUpdater extends EventEmitter { throw new Error(`App version is not valid semver version: "${currentVersionString}`) } - const versionPrereleaseComponent = getVersionPreleaseComponents(this.currentVersion) - this.allowDowngrade = versionPrereleaseComponent != null && versionPrereleaseComponent.length > 0 + this.allowDowngrade = hasPrereleaseComponents(this.currentVersion) this.allowPrerelease = this.allowDowngrade if (options != null) { @@ -196,7 +195,7 @@ export abstract class AppUpdater extends EventEmitter { throw new Error(`Latest version (from update server) is not valid semver version: "${latestVersion}`) } - if (this.allowDowngrade ? isVersionsEqual(latestVersion, this.currentVersion) : !isVersionGreaterThan(latestVersion, this.currentVersion)) { + if (this.allowDowngrade && !hasPrereleaseComponents(latestVersion) ? isVersionsEqual(latestVersion, this.currentVersion) : !isVersionGreaterThan(latestVersion, this.currentVersion)) { this.updateAvailable = false if (this.logger != null) { this.logger.info(`Update for version ${this.currentVersion} is not available (latest version: ${versionInfo.version}, downgrade is ${this.allowDowngrade ? "allowed" : "disallowed"}.`) @@ -325,4 +324,9 @@ export abstract class AppUpdater extends EventEmitter { throw new Error(`Unsupported provider: ${provider}`) } } +} + +function hasPrereleaseComponents(version: string) { + const versionPrereleaseComponent = getVersionPreleaseComponents(version) + return versionPrereleaseComponent != null && versionPrereleaseComponent.length > 0 } \ No newline at end of file diff --git a/test/out/__snapshots__/nsisUpdaterTest.js.snap b/test/out/__snapshots__/nsisUpdaterTest.js.snap index 23fc067edde..c2775f76ba1 100644 --- a/test/out/__snapshots__/nsisUpdaterTest.js.snap +++ b/test/out/__snapshots__/nsisUpdaterTest.js.snap @@ -30,6 +30,8 @@ Object { exports[`downgrade (disallowed) 1`] = `undefined`; +exports[`downgrade (disallowed, beta) 1`] = `undefined`; + exports[`file url 1`] = ` Object { "name": "TestApp Setup 1.1.0.exe", @@ -79,19 +81,19 @@ Object { exports[`file url github pre-release 1`] = ` Object { - "name": "TestApp-Setup-1.1.0.exe", + "name": "TestApp-Setup-1.5.2-beta.3.exe", "sha2": "f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2", - "url": "https://github.com/develar/__test_nsis_release/releases/download/v1.5.0/TestApp-Setup-1.1.0.exe", + "url": "https://github.com/develar/__test_nsis_release/releases/download/v1.5.2-beta.3/TestApp-Setup-1.5.2-beta.3.exe", } `; exports[`file url github pre-release 2`] = ` Object { - "path": "TestApp Setup 1.1.0.exe", - "releaseName": "1.5.0", - "releaseNotes": "

Test pre-release. qefr

", + "path": "TestApp Setup 1.5.2-beta.3.exe", + "releaseName": "v1.5.2-beta.3", + "releaseNotes": "No content.", "sha2": "f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2", - "version": "1.5.0", + "version": "1.5.2-beta.3", } `; diff --git a/test/src/nsisUpdaterTest.ts b/test/src/nsisUpdaterTest.ts index 78659723f8a..ccbd3f5d96f 100644 --- a/test/src/nsisUpdaterTest.ts +++ b/test/src/nsisUpdaterTest.ts @@ -15,20 +15,22 @@ if (process.env.ELECTRON_BUILDER_OFFLINE === "true") { const tmpDir = new TmpDir() -const g = (global) -g.__test_app = { - getVersion: function () { - return "0.0.1" - }, +function createTestApp(version: string) { + return { + getVersion: () => version, - getAppPath: function () { - }, + getAppPath: function () { + }, - on: function () { - // ignored - }, + on: function () { + // ignored + }, + } } +const g = (global) +g.__test_app = createTestApp("0.0.1") + process.env.TEST_UPDATER_PLATFORM = "win32" test("check updates - no versions at all", async () => { @@ -66,19 +68,7 @@ async function testUpdateFromBintray(app: any) { test("file url", () => testUpdateFromBintray(null)) test("downgrade (disallowed)", async () => { - const updater = new NsisUpdater(null, { - getVersion: function () { - return "2.0.0" - }, - - getAppPath: function () { - }, - - on: function () { - // ignored - }, - } - ) + const updater = new NsisUpdater(null, createTestApp("2.0.0")) updater.updateConfigPath = await writeUpdateConfig({ provider: "bintray", owner: "actperepo", @@ -100,18 +90,30 @@ test("downgrade (disallowed)", async () => { expect(actualEvents).toEqual(expectedEvents) }) -test("downgrade (allowed)", () => testUpdateFromBintray({ - getVersion: function () { - return "2.0.0-beta.1" - }, +test("downgrade (disallowed, beta)", async () => { + const updater = new NsisUpdater(null, createTestApp("1.5.2-beta.4")) + updater.updateConfigPath = await writeUpdateConfig({ + provider: "github", + owner: "develar", + repo: "__test_nsis_release", + }) + + const actualEvents: Array = [] + const expectedEvents = ["checking-for-update", "update-not-available"] + for (const eventName of expectedEvents) { + updater.addListener(eventName, () => { + actualEvents.push(eventName) + }) + } + + const updateCheckResult = await updater.checkForUpdates() + expect(updateCheckResult.fileInfo).toMatchSnapshot() + expect(updateCheckResult.downloadPromise).toBeUndefined() - getAppPath: function () { - }, + expect(actualEvents).toEqual(expectedEvents) +}) - on: function () { - // ignored - }, -})) +test("downgrade (allowed)", () => testUpdateFromBintray(createTestApp("2.0.0-beta.1"))) test("file url generic", async () => { const updater = new NsisUpdater() @@ -210,18 +212,7 @@ test("file url github", async () => { }) test("file url github pre-release", async () => { - const updater = new NsisUpdater(null, { - getVersion: function () { - return "1.6.0-beta.1" - }, - - getAppPath: function () { - }, - - on: function () { - // ignored - }, - }) + const updater = new NsisUpdater(null, createTestApp("1.5.0-beta.1")) updater.updateConfigPath = await writeUpdateConfig({ provider: "github", owner: "develar", diff --git a/yarn.lock b/yarn.lock index 403c7dd434b..551ef045b01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,9 +22,9 @@ "7zip-bin-mac" "^1.0.1" "7zip-bin-win" "^2.0.2" -"@types/electron@^1.4.35": - version "1.4.35" - resolved "https://registry.yarnpkg.com/@types/electron/-/electron-1.4.35.tgz#48e5e6ef0b49f27b9f78b87d80f796e3f0a4f33c" +"@types/electron@^1.4.37": + version "1.4.37" + resolved "https://registry.yarnpkg.com/@types/electron/-/electron-1.4.37.tgz#cfff6958f224842c1742a6e4873ed7135e5f2ff3" dependencies: "@types/node" "*" @@ -36,17 +36,17 @@ version "19.2.2" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-19.2.2.tgz#71f428be2fa6eb9f15bb0abc3cade67905f94839" -"@types/js-yaml@^3.5.29": - version "3.5.29" - resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.5.29.tgz#29f4dd9314fbccb080d8bd84b9c23811ec5090c2" +"@types/js-yaml@^3.5.30": + version "3.5.30" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.5.30.tgz#f555118c022318e57e36d803379cb8ee38ee20a7" "@types/node-forge@^0.6.8": version "0.6.8" resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-0.6.8.tgz#fb38ae420be9c9b679bed3f974201120947b920f" "@types/node@*": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.12.tgz#ae5f67a19c15f752148004db07cbbb372e69efc9" + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.13.tgz#1b0a53fe9ef9c3a5d061b126cc9b915bca43a3f5" "@types/source-map-support@^0.2.28": version "0.2.28" @@ -91,8 +91,8 @@ ajv-keywords@^2.0.1-beta.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.0.1-beta.2.tgz#b48f36d63e9334c5045bafde090db006328a0972" ajv@^4.9.1: - version "4.11.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.6.tgz#947e93049790942b2a2d60a8289b28924d39f987" + version "4.11.7" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" @@ -206,8 +206,8 @@ arr-diff@^2.0.0: arr-flatten "^1.0.1" arr-flatten@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.2.tgz#1ec1e63439c54f67d6f72bb4299c3d4f73b2d996" + version "1.0.3" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" array-back@^1.0.2, array-back@^1.0.3, array-back@^1.0.4: version "1.0.4" @@ -271,9 +271,9 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" -aws-sdk@^2.41.0: - version "2.41.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.41.0.tgz#930c15ae7ef4532bb8912c4c36a18b0023fd74c2" +aws-sdk@^2.45.0: + version "2.45.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.45.0.tgz#045dbd323630170968306dc849d793dbb1e4444d" dependencies: buffer "4.9.1" crypto-browserify "1.0.9" @@ -527,8 +527,8 @@ babel-types@^6.18.0, babel-types@^6.24.1: to-fast-properties "^1.0.1" babylon@^6.1.21, babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0: - version "6.16.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" + version "6.17.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932" balanced-match@^0.4.1: version "0.4.2" @@ -930,11 +930,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.6.1, debug@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" +debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.6.1, debug@^2.6.3, debug@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" dependencies: - ms "0.7.2" + ms "0.7.3" decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" @@ -1804,8 +1804,8 @@ jest-file-exists@^19.0.0: resolved "https://registry.yarnpkg.com/jest-file-exists/-/jest-file-exists-19.0.0.tgz#cca2e587a11ec92e24cfeab3f8a94d657f3fceb8" jest-haste-map@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-19.0.0.tgz#adde00b62b1fe04432a104b3254fc5004514b55e" + version "19.0.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-19.0.1.tgz#7616222491275050c7af39dbeab0a57c32ef9652" dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.6" @@ -1823,9 +1823,9 @@ jest-jasmine2@^19.0.2: jest-message-util "^19.0.0" jest-snapshot "^19.0.2" -jest-junit@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-1.4.0.tgz#983eca042f2db2d76d09b96064dbb55d83bf685c" +jest-junit@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-1.5.1.tgz#f6e48203e691f827530f21fb509f8c0da75ca15b" dependencies: mkdirp "^0.5.1" xml "^1.0.1" @@ -2269,7 +2269,7 @@ mime@^1.3.4: dependencies: brace-expansion "^1.0.0" -minimist@0.0.8, minimist@~0.0.1: +minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -2277,6 +2277,10 @@ 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" +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + 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" @@ -2287,9 +2291,9 @@ mkpath@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz#7554a6f8d871834cc97b5462b122c4c124d6de91" -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" +ms@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" natural-compare@^1.4.0: version "1.4.0" @@ -2330,9 +2334,9 @@ nopt@~1.0.10: dependencies: abbrev "1" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff" +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -2453,8 +2457,8 @@ p-locate@^2.0.0: p-limit "^1.1.0" package-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.0.tgz#f3c9dc8738f5b59304d54d2cfb3f91d08fdd7998" + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" dependencies: got "^6.7.1" registry-auth-token "^3.0.1" @@ -2705,8 +2709,8 @@ regex-cache@^0.4.2: is-primitive "^2.0.0" registry-auth-token@^3.0.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.2.tgz#1b9e51a185c930da34a9894b12a52ea998f1adaf" + version "3.2.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.2.0.tgz#5bf3bd4608a2dd9242542c44d66ad8a5f9cdd3b0" dependencies: rc "^1.1.6" @@ -2794,8 +2798,8 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" resolve@^1.2.0, resolve@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" dependencies: path-parse "^1.0.5" @@ -3215,8 +3219,8 @@ tslint@^5.1.0: tsutils "^1.4.0" tsutils@^1.4.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.6.0.tgz#1fd7fac2a61369ed99cd3997f0fbb437128850f2" + version "1.7.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.7.0.tgz#2e63ccc2d6912bb095f7e363ff4100721dc86f50" tunnel-agent@^0.6.0: version "0.6.0" @@ -3470,8 +3474,8 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" write-file-atomic@^1.1.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a" + version "1.3.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.3.tgz#831dd22d491bdc135180bb996a0eb3f8bf587791" dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4"