diff --git a/.idea/dictionaries/develar.xml b/.idea/dictionaries/develar.xml
index 194e07373c0..70aa01398fb 100644
--- a/.idea/dictionaries/develar.xml
+++ b/.idea/dictionaries/develar.xml
@@ -186,6 +186,7 @@
kext
keyserver
langs
+ launchui
lcid
lerna
levelup
@@ -204,6 +205,7 @@
libnss
libpcre
libpulse
+ libui
libunity
libvpx
libxslt
@@ -309,6 +311,7 @@
rels
repos
resample
+ resourcehacker
retrycancel
revalidate
rimraf
@@ -377,6 +380,7 @@
webm
welcomefinishpage
whoami
+ winearch
winedlloverrides
winemenubuilder
winstaller
diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml
deleted file mode 100644
index afac610da59..00000000000
--- a/.idea/jsLibraryMappings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index c1a52764083..28a804d8932 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,7 +3,4 @@
-
-
-
\ No newline at end of file
diff --git a/package.json b/package.json
index a735b78ba93..9600a281da2 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dependencies": {
"7zip-bin": "~4.1.0",
"@types/is-ci": "^1.1.0",
- "app-builder-bin": "2.4.3",
+ "app-builder-bin": "2.5.0",
"archiver": "^3.0.0",
"async-exit-hook": "^2.0.1",
"bluebird-lst": "^1.0.6",
@@ -69,9 +69,9 @@
"yargs": "^12.0.2"
},
"devDependencies": {
- "@babel/core": "^7.1.5",
+ "@babel/core": "^7.1.6",
"@babel/plugin-proposal-class-properties": "^7.1.0",
- "@babel/plugin-proposal-decorators": "^7.1.2",
+ "@babel/plugin-proposal-decorators": "^7.1.6",
"@babel/plugin-proposal-do-expressions": "^7.0.0",
"@babel/plugin-proposal-export-default-from": "^7.0.0",
"@babel/plugin-proposal-export-namespace-from": "^7.0.0",
@@ -86,7 +86,7 @@
"@babel/plugin-proposal-throw-expressions": "^7.0.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
"@babel/plugin-syntax-import-meta": "^7.0.0",
- "@babel/preset-env": "^7.1.5",
+ "@babel/preset-env": "^7.1.6",
"@babel/preset-react": "^7.0.0",
"@types/debug": "^0.0.31",
"@types/ejs": "^2.6.0",
@@ -121,10 +121,6 @@
"whitespace": "^2.1.0",
"worker-farm": "^1.6.0"
},
- "/////": "proton-native is required only for proton tests",
- "optionalDependencies": {
- "proton-native": "1.1.10"
- },
"jest": {
"testEnvironment": "node",
"roots": [
diff --git a/packages/app-builder-lib/package.json b/packages/app-builder-lib/package.json
index 18b35487dd8..e4c05f5c591 100644
--- a/packages/app-builder-lib/package.json
+++ b/packages/app-builder-lib/package.json
@@ -42,7 +42,7 @@
"homepage": "https://github.com/electron-userland/electron-builder",
"dependencies": {
"7zip-bin": "~4.1.0",
- "app-builder-bin": "2.4.3",
+ "app-builder-bin": "2.5.0",
"async-exit-hook": "^2.0.1",
"bluebird-lst": "^1.0.6",
"chromium-pickle-js": "^0.2.0",
diff --git a/packages/app-builder-lib/src/Framework.ts b/packages/app-builder-lib/src/Framework.ts
index b709a6c5e81..88ac37bcbc1 100644
--- a/packages/app-builder-lib/src/Framework.ts
+++ b/packages/app-builder-lib/src/Framework.ts
@@ -1,6 +1,6 @@
import { FileTransformer } from "builder-util/out/fs"
import { AsarIntegrity } from "./asar/integrity"
-import { Platform, PlatformPackager, ElectronPlatformName } from "./index"
+import { Platform, PlatformPackager, ElectronPlatformName, AfterPackContext } from "./index"
export interface Framework {
readonly name: string
@@ -11,13 +11,20 @@ export interface Framework {
readonly isNpmRebuildRequired: boolean
- readonly isDefaultAppIconProvided: boolean
- getDefaultIcon?(platform: Platform): string
+ readonly isCopyElevateHelper: boolean
+
+ getDefaultIcon?(platform: Platform): string | null
+
+ getMainFile?(platform: Platform): string | null
+
+ getExcludedDependencies?(platform: Platform): Array | null
prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions): Promise
beforeCopyExtraFiles?(options: BeforeCopyExtraFilesOptions): Promise
+ afterPack?(context: AfterPackContext): Promise
+
createTransformer?(): FileTransformer | null
}
diff --git a/packages/app-builder-lib/src/ProtonFramework.ts b/packages/app-builder-lib/src/ProtonFramework.ts
index 75980a906a0..468b6d31bfe 100644
--- a/packages/app-builder-lib/src/ProtonFramework.ts
+++ b/packages/app-builder-lib/src/ProtonFramework.ts
@@ -1,35 +1,31 @@
-import { chmod, emptyDir, ensureDir, writeFile } from "fs-extra-p"
-import { getBin } from "./binDownload"
-import { FileTransformer, copyFile } from "builder-util/out/fs"
+import { FileTransformer } from "builder-util/out/fs"
import { log } from "builder-util"
import { safeStringifyJson } from "builder-util-runtime"
import { Platform } from "./core"
import { NODE_MODULES_PATTERN } from "./fileTransformer"
-import { Framework, AppInfo, PrepareApplicationStageDirectoryOptions } from "./index"
-import * as path from "path"
-import { LinuxPackager } from "./linuxPackager"
-import MacPackager from "./macPackager"
-import { build as buildPlist } from "plist"
+import { LibUiFramework } from "./frameworks/LibUiFramework"
import { getTemplatePath } from "./util/pathManager"
-export function createProtonFrameworkSupport(nodeVersion: string, appInfo: AppInfo): Framework {
- return new ProtonFramework(nodeVersion === "current" ? process.versions.node : nodeVersion, `${appInfo.productFilename}.app`)
-}
-
-class ProtonFramework implements Framework {
+export class ProtonFramework extends LibUiFramework {
readonly name = "proton"
- readonly isDefaultAppIconProvided = false
- readonly macOsDefaultTargets = ["dmg"]
- readonly defaultAppIdPrefix = "com.proton-native."
// noinspection JSUnusedGlobalSymbols
- readonly isNpmRebuildRequired = false
+ readonly defaultAppIdPrefix = "com.proton-native."
- constructor(readonly version: string, readonly distMacOsAppName: string) {
+ constructor(version: string, distMacOsAppName: string, isUseLaunchUi: boolean) {
+ super(version, distMacOsAppName, isUseLaunchUi)
}
- getDefaultIcon() {
- return getTemplatePath("proton-native.icns")
+ getDefaultIcon(platform: Platform) {
+ if (platform === Platform.WINDOWS) {
+ return getTemplatePath("icons/proton-native/proton-native.ico")
+ }
+ else if (platform === Platform.LINUX) {
+ return getTemplatePath("icons/proton-native/linux")
+ }
+ else {
+ return getTemplatePath("icons/proton-native/proton-native.icns")
+ }
}
createTransformer(): FileTransformer | null {
@@ -37,37 +33,7 @@ class ProtonFramework implements Framework {
const babelOptions: any = {ast: false, sourceMaps: "inline"}
if (process.env.TEST_SET_BABEL_PRESET === "true") {
babel = require("@babel/core")
- // out test dir can be located outside of electron-builder node_modules and babel cannot resolve string names of preset
- babelOptions.presets = [
- [require("@babel/preset-env").default, {targets: {node: this.version}}],
- require("@babel/preset-react"),
- ]
- babelOptions.plugins = [
- // stage 0
- require("@babel/plugin-proposal-function-bind").default,
-
- // stage 1
- require("@babel/plugin-proposal-export-default-from").default,
- require("@babel/plugin-proposal-logical-assignment-operators").default,
- [require("@babel/plugin-proposal-optional-chaining").default, {loose: false}],
- [require("@babel/plugin-proposal-pipeline-operator").default, {proposal: "minimal"}],
- [require("@babel/plugin-proposal-nullish-coalescing-operator").default, {loose: false}],
- require("@babel/plugin-proposal-do-expressions").default,
-
- // stage 2
- [require("@babel/plugin-proposal-decorators").default, {legacy: true}],
- require("@babel/plugin-proposal-function-sent").default,
- require("@babel/plugin-proposal-export-namespace-from").default,
- require("@babel/plugin-proposal-numeric-separator").default,
- require("@babel/plugin-proposal-throw-expressions").default,
-
- // stage 3
- require("@babel/plugin-syntax-dynamic-import").default,
- require("@babel/plugin-syntax-import-meta").default,
- [require("@babel/plugin-proposal-class-properties").default, {loose: false}],
- require("@babel/plugin-proposal-json-strings").default,
- ]
- babelOptions.babelrc = false
+ babel = testOnlyBabel(babel, babelOptions, this.version)
}
else {
try {
@@ -98,54 +64,39 @@ class ProtonFramework implements Framework {
})
}
}
-
- private async prepareMacosApplicationStageDirectory(packager: MacPackager, options: PrepareApplicationStageDirectoryOptions) {
- const appContentsDir = path.join(options.appOutDir, this.distMacOsAppName, "Contents")
- await ensureDir(path.join(appContentsDir, "Resources"))
- await ensureDir(path.join(appContentsDir, "MacOS"))
- await copyFile(path.join(await getBin("node", `${this.version}-darwin-x64`, null), "node"), path.join(appContentsDir, "MacOS", "node"))
-
- const appPlist: any = {
- // https://github.com/albe-rosado/create-proton-app/issues/13
- NSHighResolutionCapable: true,
- }
- await packager.applyCommonInfo(appPlist, appContentsDir)
- await Promise.all([
- writeFile(path.join(appContentsDir, "Info.plist"), buildPlist(appPlist)),
- writeExecutableMain(path.join(appContentsDir, "MacOS", appPlist.CFBundleExecutable), `#!/bin/sh
-DIR=$(dirname "$0")
-"$DIR/node" "$DIR/../Resources/app/${options.packager.info.metadata.main || "index.js"}"
-`),
- ])
- }
-
- private async prepareLinuxApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {
- const appOutDir = options.appOutDir
- await copyFile(path.join(await getBin("node", `${this.version}-linux-${options.arch === "ia32" ? "x86" : options.arch}`, null), "node"), path.join(appOutDir, "node"))
- const mainPath = path.join(appOutDir, (options.packager as LinuxPackager).executableName)
- await writeExecutableMain(mainPath, `#!/bin/sh
-DIR=$(dirname "$0")
-"$DIR/node" "$DIR/app/${options.packager.info.metadata.main || "index.js"}"
-`)
- }
-
- async prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {
- await emptyDir(options.appOutDir)
-
- const packager = options.packager
- if (packager.platform === Platform.MAC) {
- await this.prepareMacosApplicationStageDirectory(packager as MacPackager, options)
- }
- else if (packager.platform === Platform.LINUX) {
- await this.prepareLinuxApplicationStageDirectory(options)
- }
- else {
- throw new Error(`Unsupported platform: ${packager.platform}`)
- }
- }
}
-async function writeExecutableMain(file: string, content: string) {
- await writeFile(file, content, {mode: 0o755})
- await chmod(file, 0o755)
-}
+function testOnlyBabel(babel: any, babelOptions: any, nodeVersion: string) {
+ // out test dir can be located outside of electron-builder node_modules and babel cannot resolve string names of preset
+ babelOptions.presets = [
+ [require("@babel/preset-env").default, {targets: {node: nodeVersion}}],
+ require("@babel/preset-react"),
+ ]
+ babelOptions.plugins = [
+ // stage 0
+ require("@babel/plugin-proposal-function-bind").default,
+
+ // stage 1
+ require("@babel/plugin-proposal-export-default-from").default,
+ require("@babel/plugin-proposal-logical-assignment-operators").default,
+ [require("@babel/plugin-proposal-optional-chaining").default, {loose: false}],
+ [require("@babel/plugin-proposal-pipeline-operator").default, {proposal: "minimal"}],
+ [require("@babel/plugin-proposal-nullish-coalescing-operator").default, {loose: false}],
+ require("@babel/plugin-proposal-do-expressions").default,
+
+ // stage 2
+ [require("@babel/plugin-proposal-decorators").default, {legacy: true}],
+ require("@babel/plugin-proposal-function-sent").default,
+ require("@babel/plugin-proposal-export-namespace-from").default,
+ require("@babel/plugin-proposal-numeric-separator").default,
+ require("@babel/plugin-proposal-throw-expressions").default,
+
+ // stage 3
+ require("@babel/plugin-syntax-dynamic-import").default,
+ require("@babel/plugin-syntax-import-meta").default,
+ [require("@babel/plugin-proposal-class-properties").default, {loose: false}],
+ require("@babel/plugin-proposal-json-strings").default,
+ ]
+ babelOptions.babelrc = false
+ return babel
+}
\ No newline at end of file
diff --git a/packages/app-builder-lib/src/binDownload.ts b/packages/app-builder-lib/src/binDownload.ts
index 6e6cea2d170..c06cb72a093 100644
--- a/packages/app-builder-lib/src/binDownload.ts
+++ b/packages/app-builder-lib/src/binDownload.ts
@@ -15,7 +15,7 @@ export function getBinFromGithub(name: string, version: string, checksum: string
return getBin(dirName, `https://github.com/electron-userland/electron-builder-binaries/releases/download/${dirName}/${dirName}.7z`, checksum)
}
-export function getBin(name: string, url: string, checksum: string | null): Promise {
+export function getBin(name: string, url?: string | null, checksum?: string | null): Promise {
let promise = versionToPromise.get(name)
// if rejected, we will try to download again
if (promise != null) {
@@ -27,11 +27,13 @@ export function getBin(name: string, url: string, checksum: string | null): Prom
return promise
}
-function doGetBin(name: string, url: string, checksum: string | null): Promise {
- const args = ["download-artifact", "--url", url, "--name", name]
+function doGetBin(name: string, url: string | undefined | null, checksum: string | null | undefined): Promise {
+ const args = ["download-artifact", "--name", name]
+ if (url != null) {
+ args.push("--url", url)
+ }
if (checksum != null) {
args.push("--sha512", checksum)
}
-
return executeAppBuilder(args)
}
\ No newline at end of file
diff --git a/packages/app-builder-lib/src/codeSign/windowsCodeSign.ts b/packages/app-builder-lib/src/codeSign/windowsCodeSign.ts
index 57311346502..cfa5519b91f 100644
--- a/packages/app-builder-lib/src/codeSign/windowsCodeSign.ts
+++ b/packages/app-builder-lib/src/codeSign/windowsCodeSign.ts
@@ -1,5 +1,6 @@
-import { executeAppBuilderAsJson, InvalidConfigurationError, asArray, log } from "builder-util/out/util"
-import { getBinFromGithub } from "../binDownload"
+import { InvalidConfigurationError, asArray, log } from "builder-util/out/util"
+import { getBin } from "../binDownload"
+import { executeAppBuilderAsJson } from "../util/appBuilder"
import { computeToolEnv, ToolInfo } from "../util/bundledTool"
import { rename } from "fs-extra-p"
import * as os from "os"
@@ -11,8 +12,7 @@ import { VmManager } from "../vm/vm"
import { WinPackager } from "../winPackager"
export function getSignVendorPath() {
- //noinspection SpellCheckingInspection
- return getBinFromGithub("winCodeSign", "2.3.2", "brAICKFcwBa+5eFkq+V5JJTt1XxiQNgHwW+ahUupAl2ciAAVikgpUmN7tsdQXjifCRwK2eS3zbE6lcP5y/KRIw==")
+ return getBin("winCodeSign")
}
export type CustomWindowsSign = (configuration: CustomWindowsSignTaskConfiguration) => Promise
diff --git a/packages/app-builder-lib/src/configuration.ts b/packages/app-builder-lib/src/configuration.ts
index bc873c1f06f..9fdaa2c3ee3 100644
--- a/packages/app-builder-lib/src/configuration.ts
+++ b/packages/app-builder-lib/src/configuration.ts
@@ -170,8 +170,20 @@ export interface Configuration extends PlatformSpecificBuildOptions {
* *Proton Native only* The version of NodeJS you are packaging for.
* You can set it to `current` to set the Node.js version that you use to run electron-builder.
*/
+ readonly nodeVersion?: string | null
+
+ readonly launchUiVersion?: boolean | string | null
+
+ /**
+ * @deprecated Set framework and nodeVersion if need.
+ */
readonly protonNodeVersion?: string | null
+ /**
+ * The framework name. One of `electron`, `proton-native`, `libui`. Defaults to `electron`.
+ */
+ readonly framework?: string | null
+
/**
* The function (or path to file or module id) to be [run after pack](#afterpack) (but before pack into distributable format and sign).
*/
diff --git a/packages/app-builder-lib/src/electron/ElectronFramework.ts b/packages/app-builder-lib/src/electron/ElectronFramework.ts
index 41a19f5aa1e..37641b71a5b 100644
--- a/packages/app-builder-lib/src/electron/ElectronFramework.ts
+++ b/packages/app-builder-lib/src/electron/ElectronFramework.ts
@@ -10,6 +10,7 @@ import { BeforeCopyExtraFilesOptions, Framework, PrepareApplicationStageDirector
import { ElectronPlatformName, Packager, Platform } from "../index"
import { LinuxPackager } from "../linuxPackager"
import MacPackager from "../macPackager"
+import { getTemplatePath } from "../util/pathManager"
import { createMacApp } from "./electronMac"
import { computeElectronVersion, getElectronVersionFromInstalled } from "./electronVersion"
@@ -97,29 +98,56 @@ async function beforeCopyExtraFiles(options: BeforeCopyExtraFilesOptions, isClea
}
}
+class ElectronFramework implements Framework {
+ // noinspection JSUnusedGlobalSymbols
+ readonly macOsDefaultTargets = ["zip", "dmg"]
+ // noinspection JSUnusedGlobalSymbols
+ readonly defaultAppIdPrefix = "com.electron."
+ // noinspection JSUnusedGlobalSymbols
+ readonly isCopyElevateHelper = true
+ // noinspection JSUnusedGlobalSymbols
+ readonly isNpmRebuildRequired = true
+
+ constructor(readonly name: string, readonly version: string, readonly distMacOsAppName: string) {
+ }
+
+ getDefaultIcon(platform: Platform) {
+ if (platform === Platform.LINUX) {
+ return path.join(getTemplatePath("icons"), "electron-linux")
+ }
+ else {
+ // default icon is embedded into app skeleton
+ return null
+ }
+ }
+
+ prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {
+ return unpack(options, createDownloadOpts(options.packager.config, options.platformName, options.arch, this.version), this.distMacOsAppName)
+ }
+
+ beforeCopyExtraFiles(options: BeforeCopyExtraFilesOptions) {
+ return beforeCopyExtraFiles(options, this.name === "electron" && semver.lte(this.version || "1.8.3", "1.8.3"))
+ }
+}
+
+class MuonFramework extends ElectronFramework {
+ constructor(version: string) {
+ super("muon", version, "Brave.app")
+ }
+
+ prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {
+ return unpack(options, {
+ mirror: "https://github.com/brave/muon/releases/download/v",
+ customFilename: `brave-v${options.version}-${options.platformName}-${options.arch}.zip`,
+ isVerifyChecksum: false,
+ ...createDownloadOpts(options.packager.config, options.platformName, options.arch, options.version),
+ }, this.distMacOsAppName)
+ }
+}
+
export async function createElectronFrameworkSupport(configuration: Configuration, packager: Packager): Promise {
if (configuration.muonVersion != null) {
- const distMacOsAppName = "Brave.app"
- return {
- name: "muon",
- isDefaultAppIconProvided: true,
- macOsDefaultTargets: ["zip", "dmg"],
- defaultAppIdPrefix: "com.electron.",
- version: configuration.muonVersion!!,
- distMacOsAppName,
- prepareApplicationStageDirectory: options => {
- return unpack(options, {
- mirror: "https://github.com/brave/muon/releases/download/v",
- customFilename: `brave-v${options.version}-${options.platformName}-${options.arch}.zip`,
- isVerifyChecksum: false,
- ...createDownloadOpts(options.packager.config, options.platformName, options.arch, options.version),
- }, distMacOsAppName)
- },
- isNpmRebuildRequired: true,
- beforeCopyExtraFiles: options => {
- return beforeCopyExtraFiles(options, false)
- },
- }
+ return new MuonFramework(configuration.muonVersion!!)
}
let version = configuration.electronVersion
@@ -137,20 +165,7 @@ export async function createElectronFrameworkSupport(configuration: Configuratio
configuration.electronVersion = version
}
- const distMacOsAppName = "Electron.app"
- return {
- isDefaultAppIconProvided: true,
- macOsDefaultTargets: ["zip", "dmg"],
- defaultAppIdPrefix: "com.electron.",
- name: "electron",
- version,
- distMacOsAppName,
- isNpmRebuildRequired: true,
- prepareApplicationStageDirectory: options => unpack(options, createDownloadOpts(options.packager.config, options.platformName, options.arch, version!!), distMacOsAppName),
- beforeCopyExtraFiles: options => {
- return beforeCopyExtraFiles(options, semver.lte(version || "1.8.3", "1.8.3"))
- },
- }
+ return new ElectronFramework("electron", version, "Electron.app")
}
async function unpack(prepareOptions: PrepareApplicationStageDirectoryOptions, options: ElectronDownloadOptions, distMacOsAppName: string) {
diff --git a/packages/app-builder-lib/src/electron/electronVersion.ts b/packages/app-builder-lib/src/electron/electronVersion.ts
index 8fbc190797f..2025356e687 100644
--- a/packages/app-builder-lib/src/electron/electronVersion.ts
+++ b/packages/app-builder-lib/src/electron/electronVersion.ts
@@ -61,7 +61,10 @@ export async function computeElectronVersion(projectDir: string, projectMetadata
}
const version = semver.coerce(electronPrebuiltDep)
- return version == null ? Promise.reject() : version.toString()
+ if (version == null) {
+ throw new Error("cannot compute electron version")
+ }
+ return version.toString()
}
function findFromElectronPrebuilt(packageData: any): any {
diff --git a/packages/app-builder-lib/src/frameworks/LibUiFramework.ts b/packages/app-builder-lib/src/frameworks/LibUiFramework.ts
new file mode 100644
index 00000000000..6e94de404ac
--- /dev/null
+++ b/packages/app-builder-lib/src/frameworks/LibUiFramework.ts
@@ -0,0 +1,116 @@
+import { chmod, emptyDir, ensureDir, rename, writeFile } from "fs-extra-p"
+import * as path from "path"
+import { build as buildPlist } from "plist"
+import { executeAppBuilder } from "builder-util"
+import { AfterPackContext } from "../configuration"
+import { Platform } from "../core"
+import { Framework, PrepareApplicationStageDirectoryOptions } from "../Framework"
+import { LinuxPackager } from "../linuxPackager"
+import MacPackager from "../macPackager"
+
+export class LibUiFramework implements Framework {
+ readonly name: string = "libui"
+ // noinspection JSUnusedGlobalSymbols
+ readonly macOsDefaultTargets = ["dmg"]
+
+ readonly defaultAppIdPrefix: string = "com.libui."
+
+ // noinspection JSUnusedGlobalSymbols
+ readonly isCopyElevateHelper = false
+
+ // noinspection JSUnusedGlobalSymbols
+ readonly isNpmRebuildRequired = false
+
+ constructor(readonly version: string, readonly distMacOsAppName: string, protected readonly isUseLaunchUi: boolean) {
+ }
+
+ async prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {
+ await emptyDir(options.appOutDir)
+
+ const packager = options.packager
+ const platform = packager.platform
+
+ if (this.isUseLaunchUiForPlatform(platform)) {
+ const appOutDir = options.appOutDir
+ await executeAppBuilder(["proton-native",
+ "--node-version", this.version,
+ "--use-launch-ui",
+ "--platform", platform.nodeName,
+ "--arch", options.arch,
+ "--stage", appOutDir,
+ "--executable", `${packager.appInfo.productFilename}${platform === Platform.WINDOWS ? ".exe" : ""}`,
+ ])
+ return
+ }
+
+ if (platform === Platform.MAC) {
+ await this.prepareMacosApplicationStageDirectory(packager as MacPackager, options)
+ }
+ else if (platform === Platform.LINUX) {
+ await this.prepareLinuxApplicationStageDirectory(options)
+ }
+ }
+
+ private async prepareMacosApplicationStageDirectory(packager: MacPackager, options: PrepareApplicationStageDirectoryOptions) {
+ const appContentsDir = path.join(options.appOutDir, this.distMacOsAppName, "Contents")
+ await ensureDir(path.join(appContentsDir, "Resources"))
+ await ensureDir(path.join(appContentsDir, "MacOS"))
+ await executeAppBuilder(["proton-native", "--node-version", this.version, "--platform", "darwin", "--stage", path.join(appContentsDir, "MacOS")])
+
+ const appPlist: any = {
+ // https://github.com/albe-rosado/create-proton-app/issues/13
+ NSHighResolutionCapable: true,
+ }
+ await packager.applyCommonInfo(appPlist, appContentsDir)
+ await Promise.all([
+ writeFile(path.join(appContentsDir, "Info.plist"), buildPlist(appPlist)),
+ writeExecutableMain(path.join(appContentsDir, "MacOS", appPlist.CFBundleExecutable), `#!/bin/sh
+ DIR=$(dirname "$0")
+ "$DIR/node" "$DIR/../Resources/app/${options.packager.info.metadata.main || "index.js"}"
+ `),
+ ])
+ }
+
+ private async prepareLinuxApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {
+ const appOutDir = options.appOutDir
+ await executeAppBuilder(["proton-native", "--node-version", this.version, "--platform", "linux", "--arch", options.arch, "--stage", appOutDir])
+ const mainPath = path.join(appOutDir, (options.packager as LinuxPackager).executableName)
+ await writeExecutableMain(mainPath, `#!/bin/sh
+ DIR=$(dirname "$0")
+ "$DIR/node" "$DIR/app/${options.packager.info.metadata.main || "index.js"}"
+ `)
+ }
+
+ async afterPack(context: AfterPackContext) {
+ const packager = context.packager
+ if (!this.isUseLaunchUiForPlatform(packager.platform)) {
+ return
+ }
+
+ // LaunchUI requires main.js, rename if need
+ const userMain = packager.info.metadata.main || "index.js"
+ if (userMain === "main.js") {
+ return
+ }
+
+ await rename(path.join(context.appOutDir, "app", userMain), path.join(context.appOutDir, "app", "main.js"))
+ }
+
+ getMainFile(platform: Platform): string | null {
+ return this.isUseLaunchUiForPlatform(platform) ? "main.js" : null
+ }
+
+ private isUseLaunchUiForPlatform(platform: Platform) {
+ return platform === Platform.WINDOWS || (this.isUseLaunchUi && platform === Platform.LINUX)
+ }
+
+ getExcludedDependencies(platform: Platform): Array | null {
+ // part of launchui
+ return this.isUseLaunchUiForPlatform(platform) ? ["libui-node"] : null
+ }
+}
+
+async function writeExecutableMain(file: string, content: string) {
+ await writeFile(file, content, {mode: 0o755})
+ await chmod(file, 0o755)
+}
\ No newline at end of file
diff --git a/packages/app-builder-lib/src/packager.ts b/packages/app-builder-lib/src/packager.ts
index 936ae62ca10..aef564768ce 100644
--- a/packages/app-builder-lib/src/packager.ts
+++ b/packages/app-builder-lib/src/packager.ts
@@ -11,12 +11,13 @@ import * as path from "path"
import { AppInfo } from "./appInfo"
import { readAsarJson } from "./asar/asar"
import { createElectronFrameworkSupport } from "./electron/ElectronFramework"
+import { LibUiFramework } from "./frameworks/LibUiFramework"
import { AfterPackContext, Configuration, Framework, Platform, SourceRepositoryInfo, Target } from "./index"
import MacPackager from "./macPackager"
import { Metadata } from "./options/metadata"
import { ArtifactCreated, PackagerOptions } from "./packagerApi"
import { PlatformPackager, resolveFunction } from "./platformPackager"
-import { createProtonFrameworkSupport } from "./ProtonFramework"
+import { ProtonFramework } from "./ProtonFramework"
import { computeArchToTargetNamesMap, createTargets, NoOpTarget } from "./targets/targetFactory"
import { computeDefaultAppDirectory, getConfig, validateConfig } from "./util/config"
import { expandMacro } from "./util/macroExpander"
@@ -33,12 +34,38 @@ function addHandler(emitter: EventEmitter, event: string, handler: (...args: Arr
declare const PACKAGE_VERSION: string
async function createFrameworkInfo(configuration: Configuration, packager: Packager): Promise {
- if (configuration.protonNodeVersion != null) {
- return createProtonFrameworkSupport(configuration.protonNodeVersion!!, packager.appInfo)
+ let framework = configuration.framework
+ if (framework != null) {
+ framework = framework.toLowerCase()
}
- else {
+
+ let nodeVersion = configuration.nodeVersion
+ // noinspection JSDeprecatedSymbols
+ if (framework == null && configuration.protonNodeVersion != null) {
+ framework = "proton"
+ // noinspection JSDeprecatedSymbols
+ nodeVersion = configuration.protonNodeVersion
+ }
+
+ if (framework === "electron" || framework == null) {
return await createElectronFrameworkSupport(configuration, packager)
}
+
+ if (nodeVersion == null || nodeVersion === "current") {
+ nodeVersion = process.versions.node
+ }
+
+ const distMacOsName = `${packager.appInfo.productFilename}.app`
+ const isUseLaunchUi = configuration.launchUiVersion !== false
+ if (framework === "proton") {
+ return new ProtonFramework(nodeVersion, distMacOsName, isUseLaunchUi)
+ }
+ else if (framework === "libui") {
+ return new LibUiFramework(nodeVersion, distMacOsName, isUseLaunchUi)
+ }
+ else {
+ throw new InvalidConfigurationError(`Unknown framework: ${framework}`)
+ }
}
export class Packager {
diff --git a/packages/app-builder-lib/src/platformPackager.ts b/packages/app-builder-lib/src/platformPackager.ts
index 31d444ec36e..b8259929257 100644
--- a/packages/app-builder-lib/src/platformPackager.ts
+++ b/packages/app-builder-lib/src/platformPackager.ts
@@ -1,5 +1,5 @@
import BluebirdPromise from "bluebird-lst"
-import { Arch, asArray, AsyncTaskManager, debug, DebugLogger, deepAssign, executeAppBuilderAsJson, getArchSuffix, InvalidConfigurationError, isEmptyOrSpaces, log } from "builder-util"
+import { Arch, asArray, AsyncTaskManager, debug, DebugLogger, deepAssign, getArchSuffix, InvalidConfigurationError, isEmptyOrSpaces, log } from "builder-util"
import { FileTransformer, statOrNull } from "builder-util/out/fs"
import { orIfFileNotExist } from "builder-util/out/promise"
import { readdir } from "fs-extra-p"
@@ -12,9 +12,10 @@ import { AsarPackager } from "./asar/asarUtil"
import { computeData } from "./asar/integrity"
import { copyFiles, FileMatcher, getFileMatchers, GetFileMatchersOptions, getMainFileMatchers, getNodeModuleFileMatcher } from "./fileMatcher"
import { createTransformer, isElectronCompileUsed } from "./fileTransformer"
-import { isElectronBased } from "./Framework"
-import { PackagerOptions, Packager, AfterPackContext, AsarOptions, Configuration, ElectronPlatformName, FileAssociation, PlatformSpecificBuildOptions, CompressionLevel, Platform, Target, TargetSpecificOptions } from "./index"
-import { copyAppFiles, transformFiles, computeFileSets, computeNodeModuleFileSets, ELECTRON_COMPILE_SHIM_FILENAME } from "./util/appFileCopier"
+import { Framework, isElectronBased } from "./Framework"
+import { AfterPackContext, AsarOptions, CompressionLevel, Configuration, ElectronPlatformName, FileAssociation, Packager, PackagerOptions, Platform, PlatformSpecificBuildOptions, Target, TargetSpecificOptions } from "./index"
+import { executeAppBuilderAsJson } from "./util/appBuilder"
+import { computeFileSets, computeNodeModuleFileSets, copyAppFiles, ELECTRON_COMPILE_SHIM_FILENAME, transformFiles } from "./util/appFileCopier"
import { expandMacro as doExpandMacro } from "./util/macroExpander"
export abstract class PlatformPackager {
@@ -217,9 +218,8 @@ export abstract class PlatformPackager
return
}
- const beforeCopyExtraFiles = this.info.framework.beforeCopyExtraFiles
- if (beforeCopyExtraFiles != null) {
- await beforeCopyExtraFiles({
+ if (framework.beforeCopyExtraFiles != null) {
+ await framework.beforeCopyExtraFiles({
packager: this,
appOutDir,
asarIntegrity: asarOptions == null ? null : await computeData(resourcesPath, asarOptions.externalAllowed ? {externalAllowed: true} : null),
@@ -227,6 +227,10 @@ export abstract class PlatformPackager
})
}
+ if (this.info.cancellationToken.cancelled) {
+ return
+ }
+
const transformerForExtraFiles = this.createTransformerForExtraFiles(packContext)
await copyFiles(extraResourceMatchers, transformerForExtraFiles)
await copyFiles(extraFileMatchers, transformerForExtraFiles)
@@ -236,8 +240,13 @@ export abstract class PlatformPackager
}
await this.info.afterPack(packContext)
+
+ if (framework.afterPack != null) {
+ await framework.afterPack(packContext)
+ }
+
const isAsar = asarOptions != null
- await this.sanityCheckPackage(appOutDir, isAsar)
+ await this.sanityCheckPackage(appOutDir, isAsar, framework)
await this.signApp(packContext, isAsar)
const afterSign = resolveFunction(this.config.afterSign, "afterSign")
@@ -420,20 +429,21 @@ export abstract class PlatformPackager
await checkFileInArchive(path.join(resourcesDir, "app", asarPath), mainPath, messagePrefix)
}
else {
- const outStat = await statOrNull(path.join(resourcesDir, "app", relativeFile))
+ const fullPath = path.join(resourcesDir, "app", relativeFile)
+ const outStat = await statOrNull(fullPath)
if (outStat == null) {
- throw new Error(`${messagePrefix} "${relativeFile}" does not exist. Seems like a wrong configuration.`)
+ throw new Error(`${messagePrefix} "${fullPath}" does not exist. Seems like a wrong configuration.`)
}
else {
//noinspection ES6MissingAwait
if (!outStat.isFile()) {
- throw new Error(`${messagePrefix} "${relativeFile}" is not a file. Seems like a wrong configuration.`)
+ throw new Error(`${messagePrefix} "${fullPath}" is not a file. Seems like a wrong configuration.`)
}
}
}
}
- private async sanityCheckPackage(appOutDir: string, isAsar: boolean): Promise {
+ private async sanityCheckPackage(appOutDir: string, isAsar: boolean, framework: Framework): Promise {
const outStat = await statOrNull(appOutDir)
if (outStat == null) {
throw new Error(`Output directory "${appOutDir}" does not exist. Seems like a wrong configuration.`)
@@ -446,7 +456,8 @@ export abstract class PlatformPackager
}
const resourcesDir = this.getResourcesDir(appOutDir)
- await this.checkFileInPackage(resourcesDir, this.info.metadata.main || "index.js", "Application entry file", isAsar)
+ const mainFile = (framework.getMainFile == null ? null : framework.getMainFile(this.platform)) || this.info.metadata.main || "index.js"
+ await this.checkFileInPackage(resourcesDir, mainFile, "Application entry file", isAsar)
await this.checkFileInPackage(resourcesDir, "package.json", "Application", isAsar)
}
@@ -545,34 +556,30 @@ export abstract class PlatformPackager
}
protected async getOrConvertIcon(format: IconFormat): Promise {
- const sourceNames = [`icon.${format === "set" ? "png" : format}`, "icon.png", "icons"]
-
- const iconPath = this.platformSpecificBuildOptions.icon || this.config.icon
- if (iconPath != null) {
- sourceNames.unshift(iconPath)
- }
-
- if (format === "ico") {
- sourceNames.push("icon.icns")
- }
-
- const result = await this.resolveIcon(sourceNames, format)
+ const result = await this.resolveIcon(asArray(this.platformSpecificBuildOptions.icon || this.config.icon), [], format)
if (result.length === 0) {
const framework = this.info.framework
if (framework.getDefaultIcon != null) {
return framework.getDefaultIcon(this.platform)
}
- log.warn({reason: "application icon is not set"}, framework.isDefaultAppIconProvided ? `default ${capitalizeFirstLetter(framework.name)} icon is used` : `application doesn't have an icon`)
- return null
+ log.warn({reason: "application icon is not set"}, `default ${capitalizeFirstLetter(framework.name)} icon is used`)
+ return this.getDefaultFrameworkIcon()
}
else {
return result[0].file
}
}
+ getDefaultFrameworkIcon(): string | null {
+ const framework = this.info.framework
+ const result = framework.getDefaultIcon == null ? null : framework.getDefaultIcon(this.platform)
+ log.warn({reason: "application icon is not set"}, `default ${capitalizeFirstLetter(framework.name)} icon is used`)
+ return result
+ }
+
// convert if need, validate size (it is a reason why tool is called even if file has target extension (already specified as foo.icns for example))
- async resolveIcon(sources: Array, outputFormat: IconFormat): Promise> {
+ async resolveIcon(sources: Array, fallbackSources: Array, outputFormat: IconFormat): Promise> {
const args = [
"icon",
"--format", outputFormat,
@@ -583,6 +590,9 @@ export abstract class PlatformPackager
for (const source of sources) {
args.push("--input", source)
}
+ for (const source of fallbackSources) {
+ args.push("--fallback-input", source)
+ }
const result: IconConvertResult = await executeAppBuilderAsJson(args)
const errorMessage = result.error
diff --git a/packages/app-builder-lib/src/remoteBuilder/RemoteBuilder.ts b/packages/app-builder-lib/src/remoteBuilder/RemoteBuilder.ts
index 287068ce089..2a0d74a6c8f 100644
--- a/packages/app-builder-lib/src/remoteBuilder/RemoteBuilder.ts
+++ b/packages/app-builder-lib/src/remoteBuilder/RemoteBuilder.ts
@@ -1,10 +1,11 @@
import BluebirdPromise from "bluebird-lst"
-import { Arch, isEnvTrue, log, executeAppBuilderAsJson, InvalidConfigurationError } from "builder-util"
+import { Arch, isEnvTrue, log, InvalidConfigurationError } from "builder-util"
import * as path from "path"
import { UploadTask } from "electron-publish/out/publisher"
import { Target, TargetSpecificOptions } from "../core"
import { ArtifactCreated } from "../packagerApi"
import { PlatformPackager } from "../platformPackager"
+import { executeAppBuilderAsJson } from "../util/appBuilder"
import { ProjectInfoManager } from "./ProjectInfoManager"
interface TargetInfo {
diff --git a/packages/app-builder-lib/src/targets/AppImageTarget.ts b/packages/app-builder-lib/src/targets/AppImageTarget.ts
index ce9b001b395..faf7e464e83 100644
--- a/packages/app-builder-lib/src/targets/AppImageTarget.ts
+++ b/packages/app-builder-lib/src/targets/AppImageTarget.ts
@@ -1,4 +1,4 @@
-import { Arch, executeAppBuilderAsJson, serializeToYaml } from "builder-util"
+import { Arch, serializeToYaml } from "builder-util"
import { outputFile } from "fs-extra-p"
import { Lazy } from "lazy-val"
import * as path from "path"
@@ -6,6 +6,7 @@ import { AppImageOptions } from ".."
import { Target } from "../core"
import { LinuxPackager } from "../linuxPackager"
import { getAppUpdatePublishConfiguration } from "../publish/PublishManager"
+import { executeAppBuilderAsJson } from "../util/appBuilder"
import { getNotLocalizedLicenseFile } from "../util/license"
import { getTemplatePath } from "../util/pathManager"
import { LinuxTargetHelper } from "./LinuxTargetHelper"
diff --git a/packages/app-builder-lib/src/targets/LinuxTargetHelper.ts b/packages/app-builder-lib/src/targets/LinuxTargetHelper.ts
index 5394f2f6616..b4236e90f91 100644
--- a/packages/app-builder-lib/src/targets/LinuxTargetHelper.ts
+++ b/packages/app-builder-lib/src/targets/LinuxTargetHelper.ts
@@ -1,11 +1,9 @@
import { asArray, isEmptyOrSpaces, log } from "builder-util"
import { outputFile } from "fs-extra-p"
import { Lazy } from "lazy-val"
-import * as path from "path"
import { LinuxTargetSpecificOptions } from ".."
import { LinuxPackager } from "../linuxPackager"
import { IconInfo } from "../platformPackager"
-import { getTemplatePath } from "../util/pathManager"
export const installPrefix = "/opt"
@@ -25,7 +23,7 @@ export class LinuxTargetHelper {
private async computeDesktopIcons(): Promise> {
const packager = this.packager
const iconDir = packager.platformSpecificBuildOptions.icon
- const sources = [iconDir == null ? "icons" : iconDir]
+ const sources = iconDir == null ? [] : [iconDir]
const commonConfiguration = packager.config
let icnsPath = (commonConfiguration.mac || {}).icon || commonConfiguration.icon
@@ -36,11 +34,8 @@ export class LinuxTargetHelper {
sources.push(icnsPath)
}
- sources.push("icon.icns")
-
- sources.push(path.join(getTemplatePath("linux"), "electron-icons"))
-
- const result = await packager.resolveIcon(sources, "set")
+ // need to put here and not as default because need to resolve image size
+ const result = await packager.resolveIcon(sources, asArray(packager.getDefaultFrameworkIcon()), "set")
this.maxIconPath = result[result.length - 1].file
return result
}
diff --git a/packages/app-builder-lib/src/targets/archive.ts b/packages/app-builder-lib/src/targets/archive.ts
index bb99a77d00b..5ff70c2f945 100644
--- a/packages/app-builder-lib/src/targets/archive.ts
+++ b/packages/app-builder-lib/src/targets/archive.ts
@@ -1,5 +1,5 @@
import { path7za } from "7zip-bin"
-import { debug7z, debug7zArgs, exec } from "builder-util"
+import { debug7z, exec } from "builder-util"
import { exists, unlinkIfExists } from "builder-util/out/fs"
import { move } from "fs-extra-p"
import * as path from "path"
@@ -171,4 +171,12 @@ export async function archive(format: string, outFile: string, dirToArchive: str
}
return outFile
+}
+
+function debug7zArgs(command: "a" | "x"): Array {
+ const args = [command, "-bd"]
+ if (debug7z.enabled) {
+ args.push("-bb")
+ }
+ return args
}
\ No newline at end of file
diff --git a/packages/app-builder-lib/src/targets/differentialUpdateInfoBuilder.ts b/packages/app-builder-lib/src/targets/differentialUpdateInfoBuilder.ts
index cf22b2c1eca..b0a81229c9a 100644
--- a/packages/app-builder-lib/src/targets/differentialUpdateInfoBuilder.ts
+++ b/packages/app-builder-lib/src/targets/differentialUpdateInfoBuilder.ts
@@ -1,8 +1,9 @@
-import { log, executeAppBuilderAsJson } from "builder-util"
+import { log } from "builder-util"
import { BlockMapDataHolder, PackageFileInfo } from "builder-util-runtime"
import * as path from "path"
import { Target } from "../core"
import { PlatformPackager } from "../platformPackager"
+import { executeAppBuilderAsJson } from "../util/appBuilder"
import { ArchiveOptions } from "./archive"
export const BLOCK_MAP_FILE_SUFFIX = ".blockmap"
diff --git a/packages/app-builder-lib/src/targets/fpm.ts b/packages/app-builder-lib/src/targets/fpm.ts
index 75f9440ef79..58b21a81345 100644
--- a/packages/app-builder-lib/src/targets/fpm.ts
+++ b/packages/app-builder-lib/src/targets/fpm.ts
@@ -204,7 +204,9 @@ export default class FpmTarget extends Target {
args.push(`${appOutDir}/=${installPrefix}/${appInfo.productFilename}`)
for (const icon of (await this.helper.icons)) {
- args.push(`${icon.file}=/usr/share/icons/hicolor/${icon.size}x${icon.size}/apps/${packager.executableName}.png`)
+ const extWithDot = path.extname(icon.file)
+ const sizeName = extWithDot === ".svg" ? "scalable" : `${icon.size}x${icon.size}`
+ args.push(`${icon.file}=/usr/share/icons/hicolor/${sizeName}/apps/${packager.executableName}${extWithDot}`)
}
const desktopFilePath = await this.helper.writeDesktopEntry(this.options)
diff --git a/packages/app-builder-lib/src/targets/nsis/NsisTarget.ts b/packages/app-builder-lib/src/targets/nsis/NsisTarget.ts
index 693aff30803..eabca244d3a 100644
--- a/packages/app-builder-lib/src/targets/nsis/NsisTarget.ts
+++ b/packages/app-builder-lib/src/targets/nsis/NsisTarget.ts
@@ -13,7 +13,7 @@ import { Target } from "../../core"
import { DesktopShortcutCreationPolicy, getEffectiveOptions } from "../../options/CommonWindowsInstallerConfiguration"
import { isSafeGithubName, normalizeExt } from "../../platformPackager"
import { time } from "../../util/timer"
-import { execWine64 } from "../../wine"
+import { execWine } from "../../wine"
import { WinPackager } from "../../winPackager"
import { archive, ArchiveOptions } from "../archive"
import { appendBlockmap, configureDifferentialAwareArchiveOptions, createBlockmap, createNsisWebDifferentialUpdateInfo } from "../differentialUpdateInfoBuilder"
@@ -306,7 +306,7 @@ export class NsisTarget extends Target {
defines.BUILD_UNINSTALLER = null
defines.UNINSTALLER_OUT_FILE = isWin ? uninstallerPath : path.win32.join("Z:", uninstallerPath)
await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, false))
- await execWine64(installerPath, [])
+ await execWine(installerPath)
await packager.sign(uninstallerPath, " Signing NSIS uninstaller")
delete defines.BUILD_UNINSTALLER
@@ -568,16 +568,9 @@ export class NsisTarget extends Target {
}
const preCompressedFileExtensions = this.getPreCompressedFileExtensions()
- if (preCompressedFileExtensions != null) {
+ if (preCompressedFileExtensions != null && preCompressedFileExtensions.length !== 0) {
for (const [arch, dir] of this.archs.entries()) {
- const preCompressedAssets = await walk(path.join(dir, "resources"), (file, stat) => stat.isDirectory() || preCompressedFileExtensions.some(it => file.endsWith(it)))
- if (preCompressedAssets.length !== 0) {
- const macro = new NsisScriptGenerator()
- for (const file of preCompressedAssets) {
- macro.file(`$INSTDIR\\${path.relative(dir, file).replace(/\//g, "\\")}`, file)
- }
- scriptGenerator.macro(`customFiles_${Arch[arch]}`, macro)
- }
+ await generateForPreCompressed(preCompressedFileExtensions, dir, arch, scriptGenerator)
}
}
@@ -620,6 +613,32 @@ export class NsisTarget extends Target {
}
}
+async function generateForPreCompressed(preCompressedFileExtensions: Array, dir: string, arch: Arch, scriptGenerator: NsisScriptGenerator) {
+ const resourcesDir = path.join(dir, "resources")
+ const dirInfo = await statOrNull(resourcesDir)
+ if (dirInfo == null || !dirInfo.isDirectory()) {
+ return
+ }
+
+ const nodeModules = `${path.sep}node_modules`
+ const preCompressedAssets = await walk(resourcesDir, (file, stat) => {
+ if (stat.isDirectory()) {
+ return !file.endsWith(nodeModules)
+ }
+ else {
+ return preCompressedFileExtensions.some(it => file.endsWith(it))
+ }
+ })
+
+ if (preCompressedAssets.length !== 0) {
+ const macro = new NsisScriptGenerator()
+ for (const file of preCompressedAssets) {
+ macro.file(`$INSTDIR\\${path.relative(dir, file).replace(/\//g, "\\")}`, file)
+ }
+ scriptGenerator.macro(`customFiles_${Arch[arch]}`, macro)
+ }
+}
+
async function createPackageFileInfo(file: string): Promise {
return {
path: file,
diff --git a/packages/app-builder-lib/src/targets/nsis/nsisUtil.ts b/packages/app-builder-lib/src/targets/nsis/nsisUtil.ts
index 29af2314958..6e2e2294814 100644
--- a/packages/app-builder-lib/src/targets/nsis/nsisUtil.ts
+++ b/packages/app-builder-lib/src/targets/nsis/nsisUtil.ts
@@ -69,6 +69,10 @@ export class CopyElevateHelper {
private readonly copied = new Map>()
copy(appOutDir: string, target: NsisTarget): Promise {
+ if (!target.packager.info.framework.isCopyElevateHelper) {
+ return Promise.resolve()
+ }
+
let isPackElevateHelper = target.options.packElevateHelper
if (isPackElevateHelper === false && target.options.perMachine === true) {
isPackElevateHelper = true
diff --git a/packages/app-builder-lib/src/targets/tools.ts b/packages/app-builder-lib/src/targets/tools.ts
index e77ee14fcf9..4b7cc8bd425 100644
--- a/packages/app-builder-lib/src/targets/tools.ts
+++ b/packages/app-builder-lib/src/targets/tools.ts
@@ -12,7 +12,7 @@ export const fpmPath = new Lazy(() => {
return Promise.resolve("fpm")
}
- return getBin("fpm", "fpm", null)
+ return getBin("fpm")
.then(it => path.join(it, "fpm"))
})
diff --git a/packages/app-builder-lib/src/util/appBuilder.ts b/packages/app-builder-lib/src/util/appBuilder.ts
new file mode 100644
index 00000000000..7b7b2c7e019
--- /dev/null
+++ b/packages/app-builder-lib/src/util/appBuilder.ts
@@ -0,0 +1,13 @@
+import { executeAppBuilder } from "builder-util"
+
+export function executeAppBuilderAsJson(args: Array): Promise {
+ return executeAppBuilder(args)
+ .then(rawResult => {
+ try {
+ return JSON.parse(rawResult) as T
+ }
+ catch (e) {
+ throw new Error(`Cannot parse result: ${e.message}: "${rawResult}"`)
+ }
+ })
+}
\ No newline at end of file
diff --git a/packages/app-builder-lib/src/util/appFileCopier.ts b/packages/app-builder-lib/src/util/appFileCopier.ts
index 0215362b49e..ef964fccbe6 100644
--- a/packages/app-builder-lib/src/util/appFileCopier.ts
+++ b/packages/app-builder-lib/src/util/appFileCopier.ts
@@ -1,5 +1,5 @@
import BluebirdPromise from "bluebird-lst"
-import { AsyncTaskManager, log, executeAppBuilderAsJson } from "builder-util"
+import { AsyncTaskManager, log } from "builder-util"
import { CONCURRENCY, FileCopier, Link, MAX_FILE_REQUESTS, FileTransformer, statOrNull, walk } from "builder-util/out/fs"
import { ensureDir, readlink, Stats, symlink } from "fs-extra-p"
import * as path from "path"
@@ -9,6 +9,7 @@ import { Packager } from "../packager"
import { PlatformPackager } from "../platformPackager"
import { excludedExts, FileMatcher } from "../fileMatcher"
import { createElectronCompilerHost, NODE_MODULES_PATTERN } from "../fileTransformer"
+import { executeAppBuilderAsJson } from "./appBuilder"
import { AppFileWalker } from "./AppFileWalker"
import { NodeModuleCopyHelper } from "./NodeModuleCopyHelper"
@@ -180,9 +181,17 @@ function validateFileSet(fileSet: ResolvedFileSet): ResolvedFileSet {
/** @internal */
export async function computeNodeModuleFileSets(platformPackager: PlatformPackager, mainMatcher: FileMatcher): Promise> {
- // const productionDeps = await platformPackager.info.productionDeps.value
+ const args = ["node-dep-tree", "--dir", platformPackager.info.appDir]
+ if (platformPackager.info.framework.getExcludedDependencies != null) {
+ const excludedDependencies = platformPackager.info.framework.getExcludedDependencies(platformPackager.platform)
+ if (excludedDependencies != null) {
+ for (const name of excludedDependencies) {
+ args.push("--exclude-dep", name)
+ }
+ }
+ }
- const deps = await executeAppBuilderAsJson>(["node-dep-tree", "--dir", platformPackager.info.appDir])
+ const deps = await executeAppBuilderAsJson>(args)
const nodeModuleExcludedExts = getNodeModuleExcludedExts(platformPackager)
// mapSeries instead of map because copyNodeModules is concurrent and so, no need to increase queue/pressure
return await BluebirdPromise.mapSeries(deps, async info => {
diff --git a/packages/app-builder-lib/src/util/packageMetadata.ts b/packages/app-builder-lib/src/util/packageMetadata.ts
index 4393edd8f42..55331fb5d5e 100644
--- a/packages/app-builder-lib/src/util/packageMetadata.ts
+++ b/packages/app-builder-lib/src/util/packageMetadata.ts
@@ -81,11 +81,6 @@ export function checkMetadata(metadata: Metadata, devMetadata: any | null, appPa
}
}
-export function versionFromDependencyRange(version: string) {
- const firstChar = version[0]
- return firstChar === "^" || firstChar === "~" ? version.substring(1) : version
-}
-
function versionSatisfies(version: string | semver.SemVer | null, range: string | semver.Range, loose?: boolean): boolean {
if (version == null) {
return false
diff --git a/packages/app-builder-lib/src/vm/WineVm.ts b/packages/app-builder-lib/src/vm/WineVm.ts
index 8b89305ed94..81c8c1cbc15 100644
--- a/packages/app-builder-lib/src/vm/WineVm.ts
+++ b/packages/app-builder-lib/src/vm/WineVm.ts
@@ -10,7 +10,7 @@ export class WineVmManager extends VmManager {
}
exec(file: string, args: Array, options?: ExecFileOptions, isLogOutIfDebug = true): Promise {
- return execWine(file, args, options)
+ return execWine(file, null, args, options)
}
spawn(file: string, args: Array, options?: SpawnOptions, extraOptions?: ExtraSpawnOptions): Promise {
diff --git a/packages/app-builder-lib/src/winPackager.ts b/packages/app-builder-lib/src/winPackager.ts
index e6a80b4d63c..2bceb0a4e8e 100644
--- a/packages/app-builder-lib/src/winPackager.ts
+++ b/packages/app-builder-lib/src/winPackager.ts
@@ -24,7 +24,7 @@ import { BuildCacheManager, digest } from "./util/cacheManager"
import { isBuildCacheEnabled } from "./util/flags"
import { time } from "./util/timer"
import { getWindowsVm, VmManager } from "./vm/vm"
-import { execWine64 } from "./wine"
+import { execWine } from "./wine"
export class WinPackager extends PlatformPackager {
readonly cscInfo = new Lazy(() => {
@@ -309,8 +309,12 @@ export class WinPackager extends PlatformPackager {
}
const timer = time("wine&sign")
- // for Linux continue to use 32 bit wine, as for now wine is not provided for Linux
- await execWine64(path.join(await getSignVendorPath(), `rcedit-${process.platform === "win32" || process.platform === "darwin" ? process.arch : "ia32"}.exe`), args)
+ // rcedit crashed of executed using wine, resourcehacker works
+ if (process.platform === "win32" || this.info.framework.name === "electron") {
+ const vendorPath = await getSignVendorPath()
+ await execWine(path.join(vendorPath, "rcedit-ia32.exe"), path.join(vendorPath, "rcedit-x64.exe"), args)
+ }
+
await this.sign(file)
timer.end()
diff --git a/packages/app-builder-lib/src/wine.ts b/packages/app-builder-lib/src/wine.ts
index 47868e19255..1c1704a32ae 100644
--- a/packages/app-builder-lib/src/wine.ts
+++ b/packages/app-builder-lib/src/wine.ts
@@ -1,101 +1,27 @@
import { ExecFileOptions } from "child_process"
-import { Lazy } from "lazy-val"
-import * as path from "path"
-import * as semver from "semver"
-import { getBinFromGithub } from "./binDownload"
-import { computeEnv, ToolInfo } from "./util/bundledTool"
-import { getMacOsVersion } from "./util/macosVersion"
-import { exec, isEnvTrue, log } from "builder-util/out/util"
+import { exec, executeAppBuilder } from "builder-util"
-const wineExecutable = new Lazy(async () => {
- const isUseSystemWine = isEnvTrue(process.env.USE_SYSTEM_WINE)
- if (isUseSystemWine) {
- log.debug(null, "using system wine is forced")
- }
- else if (process.platform === "darwin") {
- // assume that on travis latest version is used
- const osVersion = await getMacOsVersion()
- let version: string | null = null
- let checksum: string | null = null
- if (semver.gte(osVersion, "10.13.0")) {
- version = "3.0.3-mac-10.13"
- // noinspection SpellCheckingInspection
- checksum = "qvnvKz8CZtUtlJ9cR1zIMTYfhQ3f1atDp1ngMcfHFP5O2/Xjnngb2uR6a/xzm6glKmuIMXG3ni2D6xu0gYFrnQ=="
- }
- else if (semver.gte(osVersion, "10.12.0") || process.env.TRAVIS_OS_NAME === "osx") {
- version = "2.0.1-mac-10.12"
- // noinspection SpellCheckingInspection
- checksum = "IvKwDml/Ob0vKfYVxcu92wxUzHu8lTQSjjb8OlCTQ6bdNpVkqw17OM14TPpzGMIgSxfVIrQZhZdCwpkxLyG3mg=="
- }
-
- if (version != null) {
- const wineDir = await getBinFromGithub("wine", version, checksum!!)
- return {
- path: path.join(wineDir, "bin/wine"),
- env: {
- ...process.env,
- WINEDEBUG: "-all,err+all",
- WINEDLLOVERRIDES: "winemenubuilder.exe=d",
- WINEPREFIX: path.join(wineDir, "wine-home"),
- DYLD_FALLBACK_LIBRARY_PATH: computeEnv(process.env.DYLD_FALLBACK_LIBRARY_PATH, [path.join(wineDir, "lib")]),
- },
- }
- }
- }
-
- await checkWineVersion(exec("wine", ["--version"]))
- return {path: "wine"}
-})
-
-const wineExecutableMac64 = new Lazy(async () => {
- const isUseSystemWine = isEnvTrue(process.env.USE_SYSTEM_WINE)
- if (isUseSystemWine) {
- log.debug(null, "using system wine is forced")
- }
- else if (process.platform === "darwin") {
- // noinspection SpellCheckingInspection
- const wineDir = await getBinFromGithub("wine", "3.0.3-mac64-10.13", "R1K6y2A4dMyveWSyRcNaWYNEBCRvk8AF8lEJ4MBrig/myLnHzKFJCQ73mIztisdam3CPreplXNP0/5iGf4134g==")
- return {
- path: path.join(wineDir, "bin/wine"),
- env: {
- ...process.env,
- WINEDEBUG: "-all,err+all",
- WINEDLLOVERRIDES: "winemenubuilder.exe=d",
- WINEPREFIX: path.join(wineDir, "wine-home"),
- DYLD_FALLBACK_LIBRARY_PATH: computeEnv(process.env.DYLD_FALLBACK_LIBRARY_PATH, [path.join(wineDir, "lib")]),
- },
+/** @private */
+export function execWine(file: string, file64: string | null = null, appArgs: Array = [], options: ExecFileOptions = {}): Promise {
+ if (process.platform === "win32") {
+ if (options.timeout == null) {
+ // 2 minutes
+ options.timeout = 120 * 1000
}
+ return exec(file, appArgs, options)
}
- await checkWineVersion(exec("wine", ["--version"]))
- return {path: "wine"}
-})
-
-export function execWine64(file: string, args: Array, options: ExecFileOptions = {}): Promise {
- return execWine(file, args, options, true)
-}
-
-/** @private */
-export function execWine(file: string, args: Array, options: ExecFileOptions = {}, isUseWine64 = false): Promise {
- if (options.timeout == null) {
- // 2 minutes
- options.timeout = 120 * 1000
+ const commandArgs = [
+ "wine",
+ "--ia32", file,
+ ]
+ if (file64 != null) {
+ commandArgs.push("--x64", file64)
}
- if (process.platform === "win32") {
- return exec(file, args, options)
+ if (appArgs.length > 0) {
+ commandArgs.push("--args", JSON.stringify(appArgs))
}
-
- return (isUseWine64 && process.platform === "darwin" ? wineExecutableMac64 : wineExecutable).value
- .then(wine => {
- const effectiveOptions = wine.env == null ? options : {...options}
- if (wine.env != null) {
- effectiveOptions.env = options.env == null ? wine.env : {
- ...options.env,
- ...wine.env,
- }
- }
- return exec(wine.path, [file].concat(args), effectiveOptions)
- })
+ return executeAppBuilder(commandArgs, undefined, options)
}
/** @private */
@@ -104,46 +30,4 @@ export function prepareWindowsExecutableArgs(args: Array, exePath: strin
args.unshift(exePath)
}
return args
-}
-
-/** @private */
-export async function checkWineVersion(checkPromise: Promise) {
- function wineError(prefix: string): string {
- return `${prefix}, please see https://electron.build/multi-platform-build#${(process.platform === "linux" ? "linux" : "macos")}`
- }
-
- let wineVersion: string
- try {
- wineVersion = (await checkPromise).trim()
- }
- catch (e) {
- if (e.code === "ENOENT") {
- throw new Error(wineError("wine is required"))
- }
- else {
- throw new Error(`Cannot check wine version: ${e}`)
- }
- }
-
- if (wineVersion.startsWith("wine-")) {
- wineVersion = wineVersion.substring("wine-".length)
- }
-
- const spaceIndex = wineVersion.indexOf(" ")
- if (spaceIndex > 0) {
- wineVersion = wineVersion.substring(0, spaceIndex)
- }
-
- const suffixIndex = wineVersion.indexOf("-")
- if (suffixIndex > 0) {
- wineVersion = wineVersion.substring(0, suffixIndex)
- }
-
- if (wineVersion.split(".").length === 2) {
- wineVersion += ".0"
- }
-
- if (semver.lt(wineVersion, "1.8.0")) {
- throw new Error(wineError(`wine 1.8+ is required, but your version is ${wineVersion}`))
- }
}
\ No newline at end of file
diff --git a/packages/app-builder-lib/templates/linux/electron-icons/128x128.png b/packages/app-builder-lib/templates/icons/electron-linux/128x128.png
similarity index 100%
rename from packages/app-builder-lib/templates/linux/electron-icons/128x128.png
rename to packages/app-builder-lib/templates/icons/electron-linux/128x128.png
diff --git a/packages/app-builder-lib/templates/linux/electron-icons/16x16.png b/packages/app-builder-lib/templates/icons/electron-linux/16x16.png
similarity index 100%
rename from packages/app-builder-lib/templates/linux/electron-icons/16x16.png
rename to packages/app-builder-lib/templates/icons/electron-linux/16x16.png
diff --git a/packages/app-builder-lib/templates/linux/electron-icons/24x24.png b/packages/app-builder-lib/templates/icons/electron-linux/24x24.png
similarity index 100%
rename from packages/app-builder-lib/templates/linux/electron-icons/24x24.png
rename to packages/app-builder-lib/templates/icons/electron-linux/24x24.png
diff --git a/packages/app-builder-lib/templates/linux/electron-icons/256x256.png b/packages/app-builder-lib/templates/icons/electron-linux/256x256.png
similarity index 100%
rename from packages/app-builder-lib/templates/linux/electron-icons/256x256.png
rename to packages/app-builder-lib/templates/icons/electron-linux/256x256.png
diff --git a/packages/app-builder-lib/templates/linux/electron-icons/32x32.png b/packages/app-builder-lib/templates/icons/electron-linux/32x32.png
similarity index 100%
rename from packages/app-builder-lib/templates/linux/electron-icons/32x32.png
rename to packages/app-builder-lib/templates/icons/electron-linux/32x32.png
diff --git a/packages/app-builder-lib/templates/linux/electron-icons/48x48.png b/packages/app-builder-lib/templates/icons/electron-linux/48x48.png
similarity index 100%
rename from packages/app-builder-lib/templates/linux/electron-icons/48x48.png
rename to packages/app-builder-lib/templates/icons/electron-linux/48x48.png
diff --git a/packages/app-builder-lib/templates/linux/electron-icons/64x64.png b/packages/app-builder-lib/templates/icons/electron-linux/64x64.png
similarity index 100%
rename from packages/app-builder-lib/templates/linux/electron-icons/64x64.png
rename to packages/app-builder-lib/templates/icons/electron-linux/64x64.png
diff --git a/packages/app-builder-lib/templates/linux/electron-icons/96x96.png b/packages/app-builder-lib/templates/icons/electron-linux/96x96.png
similarity index 100%
rename from packages/app-builder-lib/templates/linux/electron-icons/96x96.png
rename to packages/app-builder-lib/templates/icons/electron-linux/96x96.png
diff --git a/packages/app-builder-lib/templates/icons/proton-native/linux/1024x1024.png b/packages/app-builder-lib/templates/icons/proton-native/linux/1024x1024.png
new file mode 100644
index 00000000000..eea522716d8
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/linux/1024x1024.png differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/linux/128x128.png b/packages/app-builder-lib/templates/icons/proton-native/linux/128x128.png
new file mode 100644
index 00000000000..9a999c01661
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/linux/128x128.png differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/linux/16x16.png b/packages/app-builder-lib/templates/icons/proton-native/linux/16x16.png
new file mode 100644
index 00000000000..f76e6827c7b
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/linux/16x16.png differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/linux/24x24.png b/packages/app-builder-lib/templates/icons/proton-native/linux/24x24.png
new file mode 100644
index 00000000000..14b42879bf0
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/linux/24x24.png differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/linux/256x256.png b/packages/app-builder-lib/templates/icons/proton-native/linux/256x256.png
new file mode 100644
index 00000000000..738f585cb38
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/linux/256x256.png differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/linux/32x32.png b/packages/app-builder-lib/templates/icons/proton-native/linux/32x32.png
new file mode 100644
index 00000000000..452781414bc
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/linux/32x32.png differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/linux/48x48.png b/packages/app-builder-lib/templates/icons/proton-native/linux/48x48.png
new file mode 100644
index 00000000000..0c70d5a19b3
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/linux/48x48.png differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/linux/512x512.png b/packages/app-builder-lib/templates/icons/proton-native/linux/512x512.png
new file mode 100644
index 00000000000..cb7759e8662
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/linux/512x512.png differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/linux/64x64.png b/packages/app-builder-lib/templates/icons/proton-native/linux/64x64.png
new file mode 100644
index 00000000000..10931b6abe7
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/linux/64x64.png differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/linux/96x96.png b/packages/app-builder-lib/templates/icons/proton-native/linux/96x96.png
new file mode 100644
index 00000000000..d571f4df19a
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/linux/96x96.png differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/proton-native.ico b/packages/app-builder-lib/templates/icons/proton-native/proton-native.ico
new file mode 100644
index 00000000000..a92d8e74dfc
Binary files /dev/null and b/packages/app-builder-lib/templates/icons/proton-native/proton-native.ico differ
diff --git a/packages/app-builder-lib/templates/icons/proton-native/proton-native.svg b/packages/app-builder-lib/templates/icons/proton-native/proton-native.svg
new file mode 100644
index 00000000000..e79d06bf04f
--- /dev/null
+++ b/packages/app-builder-lib/templates/icons/proton-native/proton-native.svg
@@ -0,0 +1,20 @@
+
\ No newline at end of file
diff --git a/packages/app-builder-lib/templates/linux/AppRun.sh b/packages/app-builder-lib/templates/linux/AppRun.sh
index 6d019168a79..a3aa9311c01 100755
--- a/packages/app-builder-lib/templates/linux/AppRun.sh
+++ b/packages/app-builder-lib/templates/linux/AppRun.sh
@@ -182,7 +182,7 @@ fi
{{if eq .SystemIntegration "ask"}}
if [ -z "$APPIMAGE_SILENT_INSTALL" ] ; then
# we ask the user only if we have found no reason to skip until here
- yesno "Install" "Would you like to integrate $APPIMAGE with your system?\n\nThis will add it to your applications menu and install icons.\nIf you don't do this you can still launch the application by double-clicking on the AppImage."
+ yesno "Install" "Would you like to integrate $(basename $APPIMAGE) with your system?\n\nThis will add it to your applications menu and install icons.\nIf you don't do this you can still launch the application by double-clicking on the AppImage."
fi
{{end}}
diff --git a/packages/builder-util/package.json b/packages/builder-util/package.json
index e2d9134d471..0bbf3ad19db 100644
--- a/packages/builder-util/package.json
+++ b/packages/builder-util/package.json
@@ -11,7 +11,7 @@
"out"
],
"dependencies": {
- "app-builder-bin": "2.4.3",
+ "app-builder-bin": "2.5.0",
"temp-file": "^3.2.0",
"fs-extra-p": "^7.0.0",
"is-ci": "^1.2.1",
diff --git a/packages/builder-util/src/util.ts b/packages/builder-util/src/util.ts
index d6c7c97579d..065a72fe4e0 100644
--- a/packages/builder-util/src/util.ts
+++ b/packages/builder-util/src/util.ts
@@ -101,7 +101,7 @@ export function exec(file: string, args?: Array | null, options?: ExecFi
logFields.stdout = stdout
}
if (stderr.length > 0) {
- logFields.stderr = file.endsWith("wine") ? removeWineSpam(stderr.toString()) : stderr
+ logFields.stderr = stderr
}
log.debug(logFields, "executed")
@@ -112,13 +112,13 @@ export function exec(file: string, args?: Array | null, options?: ExecFi
let message = chalk.red(removePassword(`Exit code: ${(error as any).code}. ${error.message}`))
if (stdout.length !== 0) {
if (file.endsWith("wine")) {
- stdout = removeWineSpam(stdout.toString())
+ stdout = stdout.toString()
}
message += `\n${chalk.yellow(stdout.toString())}`
}
if (stderr.length !== 0) {
if (file.endsWith("wine")) {
- stderr = removeWineSpam(stderr.toString())
+ stderr = stderr.toString()
}
message += `\n${chalk.red(stderr.toString())}`
}
@@ -129,19 +129,6 @@ export function exec(file: string, args?: Array | null, options?: ExecFi
})
}
-function removeWineSpam(out: string) {
- return out.toString()
- .split("\n")
- .filter(it => !it.includes("wine: cannot find L\"C:\\\\windows\\\\system32\\\\winemenubuilder.exe\"")
- && !it.includes("err:wineboot:ProcessRunKeys Error running cmd L\"C:\\\\windows\\\\system32\\\\winemenubuilder.exe")
- && !it.includes("Wine cannot find the FreeType font library.")
- && !it.includes("use TrueType fonts please install a version of FreeType greater than")
- && !it.includes("or equal to 2.0.5.")
- && !it.includes("http://www.freetype.org")
- )
- .join("\n")
-}
-
export interface ExtraSpawnOptions {
isPipeInput?: boolean
}
@@ -263,14 +250,6 @@ export function use(value: T | null, task: (it: T) => R): R | null {
return value == null ? null : task(value)
}
-export function debug7zArgs(command: "a" | "x"): Array {
- const args = [command, "-bd"]
- if (debug7z.enabled) {
- args.push("-bb")
- }
- return args
-}
-
export function isEmptyOrSpaces(s: string | null | undefined): s is "" | null | undefined {
return s == null || s.trim().length === 0
}
@@ -346,7 +325,7 @@ export class InvalidConfigurationError extends Error {
}
}
-export function executeAppBuilder(args: Array, childProcessConsumer?: (childProcess: ChildProcess) => void): Promise {
+export function executeAppBuilder(args: Array, childProcessConsumer?: (childProcess: ChildProcess) => void, extraOptions: ExecFileOptions = {}): Promise {
return new Promise((resolve, reject) => {
const command = appBuilderPath
const env: any = {
@@ -359,7 +338,13 @@ export function executeAppBuilder(args: Array, childProcessConsumer?: (c
if (cacheEnv != null && cacheEnv.length > 0) {
env.ELECTRON_BUILDER_CACHE = path.resolve(cacheEnv)
}
+
+ if (extraOptions.env != null) {
+ Object.assign(env, extraOptions.env)
+ }
+
const childProcess = doSpawn(command, args, {
+ ...extraOptions,
env,
stdio: ["ignore", "pipe", process.stdout]
})
@@ -368,16 +353,4 @@ export function executeAppBuilder(args: Array, childProcessConsumer?: (c
}
handleProcess("close", childProcess, command, resolve, reject)
})
-}
-
-export function executeAppBuilderAsJson(args: Array): Promise {
- return executeAppBuilder(args)
- .then(rawResult => {
- try {
- return JSON.parse(rawResult) as T
- }
- catch (e) {
- throw new Error(`Cannot parse result: ${e.message}: "${rawResult}"`)
- }
- })
}
\ No newline at end of file
diff --git a/packages/electron-builder-squirrel-windows/src/squirrelPack.ts b/packages/electron-builder-squirrel-windows/src/squirrelPack.ts
index 805a98678b9..9b787ec7c16 100644
--- a/packages/electron-builder-squirrel-windows/src/squirrelPack.ts
+++ b/packages/electron-builder-squirrel-windows/src/squirrelPack.ts
@@ -2,7 +2,7 @@ import { path7za } from "7zip-bin"
import { Arch, debug, exec, log, spawn } from "builder-util"
import { copyFile, walk } from "builder-util/out/fs"
import { compute7zCompressArgs } from "app-builder-lib/out/targets/archive"
-import { execWine64, prepareWindowsExecutableArgs as prepareArgs } from "app-builder-lib/out/wine"
+import { execWine, prepareWindowsExecutableArgs as prepareArgs } from "app-builder-lib/out/wine"
import { WinPackager } from "app-builder-lib/out/winPackager"
import { createWriteStream, ensureDir, remove, stat, unlink, writeFile } from "fs-extra-p"
import * as path from "path"
@@ -90,7 +90,7 @@ export class SquirrelBuilder {
const embeddedArchiveFile = await this.createEmbeddedArchiveFile(nupkgPath, dirToArchive)
- await execWine64(path.join(options.vendorPath, "WriteZipToSetup.exe"), [setupPath, embeddedArchiveFile])
+ await execWine(path.join(options.vendorPath, "WriteZipToSetup.exe"), null, [setupPath, embeddedArchiveFile])
await packager.signAndEditResources(setupPath, arch, outDir)
if (options.msi && process.platform === "win32") {
@@ -262,7 +262,7 @@ async function encodedZip(archive: any, dir: string, prefix: string, vendorPath:
if (file.endsWith(".exe") && !file.includes("squirrel.exe") && !relativeSafeFilePath.includes("/")) {
const tempFile = await packager.getTempFile("stub.exe")
await copyFile(path.join(vendorPath, "StubExecutable.exe"), tempFile)
- await execWine64(path.join(vendorPath, "WriteZipToSetup.exe"), ["--copy-stub-resources", file, tempFile])
+ await execWine(path.join(vendorPath, "WriteZipToSetup.exe"), null, ["--copy-stub-resources", file, tempFile])
await packager.sign(tempFile)
archive._append(tempFile, {
diff --git a/test/fixtures/proton/index.js b/test/fixtures/proton/index.js
index a54a7853512..bbd31f02d13 100644
--- a/test/fixtures/proton/index.js
+++ b/test/fixtures/proton/index.js
@@ -1,46 +1,19 @@
import React, { Component } from 'react';
-import fs from 'fs'
-import { render, Window, App, TextInput, Dialog, Menu, Box } from 'proton-native';
-class Notepad extends Component {
- state = {text: ''}
+import { render, Window, App, Button } from 'proton-native';
- save() {
- const filename = Dialog('Save')
- fs.writeFile(filename, this.state.text)
- }
-
- open() {
- const filename = Dialog('Open')
- fs.readFile(filename, (err, data) => {
- if (err)
- throw err
- this.setState({text: data})
- })
- }
-
- shouldComponentUpdate(nextProps, nextState) {
- if(typeof nextState.text === 'string')
- return false // nextState is set from input
- else
- return true // nextState is set from file
- }
-
- render() {
- return (
-
-
-
-
- this.setState({text})} multiline={true}>{this.state.text}
-
-
-
- );
- }
+class Example extends Component {
+ render() {
+ return (
+
+
+
+
+
+ );
+ }
}
-render();
\ No newline at end of file
+render();
\ No newline at end of file
diff --git a/test/fixtures/proton/package.json b/test/fixtures/proton/package.json
index 4b8451ed89a..d6faf14d397 100644
--- a/test/fixtures/proton/package.json
+++ b/test/fixtures/proton/package.json
@@ -4,9 +4,8 @@
"description": "a notepad app built using proton-native",
"main": "index.js",
"dependencies": {
- "proton-native": "^1.0.15"
+ "proton-native": "~1.1.10"
},
- "devDependencies": {},
"scripts": {
"start": "node_modules/.bin/babel-node index.js"
},
diff --git a/test/out/__snapshots__/mainEntryTest.js.snap b/test/out/__snapshots__/mainEntryTest.js.snap
index b89aa62ab9f..0a9a457c75e 100644
--- a/test/out/__snapshots__/mainEntryTest.js.snap
+++ b/test/out/__snapshots__/mainEntryTest.js.snap
@@ -2,7 +2,7 @@
exports[`invalid main in the app package.json (custom asar) 1`] = `"Application entry file \\"main.js\\" in the \\"/app.asar\\" does not exist. Seems like a wrong configuration."`;
-exports[`invalid main in the app package.json (no asar) 1`] = `"Application entry file \\"main.js\\" does not exist. Seems like a wrong configuration."`;
+exports[`invalid main in the app package.json (no asar) 1`] = `"Application entry file \\"/main.js\\" does not exist. Seems like a wrong configuration."`;
exports[`invalid main in the app package.json 1`] = `"Application entry file \\"main.js\\" in the \\"/app.asar\\" does not exist. Seems like a wrong configuration."`;
diff --git a/test/out/__snapshots__/protonTest.js.snap b/test/out/__snapshots__/protonTest.js.snap
index ebdba507305..fe476e9609e 100644
--- a/test/out/__snapshots__/protonTest.js.snap
+++ b/test/out/__snapshots__/protonTest.js.snap
@@ -49,3 +49,27 @@ Object {
"NSHighResolutionCapable": true,
}
`;
+
+exports[`win 1`] = `
+Object {
+ "win": Array [
+ Object {
+ "arch": "x64",
+ "file": "notepad Setup 1.0.0.exe",
+ "safeArtifactName": "notepad-setup-1.0.0.exe",
+ "updateInfo": Object {
+ "sha512": "@sha512",
+ "size": "@size",
+ },
+ },
+ Object {
+ "file": "notepad Setup 1.0.0.exe.blockmap",
+ "safeArtifactName": "notepad-setup-1.0.0.exe.blockmap",
+ "updateInfo": Object {
+ "sha512": "@sha512",
+ "size": "@size",
+ },
+ },
+ ],
+}
+`;
diff --git a/test/src/BuildTest.ts b/test/src/BuildTest.ts
index 8d9f3d5096f..f9dbe45a7bb 100644
--- a/test/src/BuildTest.ts
+++ b/test/src/BuildTest.ts
@@ -1,5 +1,4 @@
import { walk } from "builder-util/out/fs"
-import { checkWineVersion } from "app-builder-lib/out/wine"
import { Arch, createTargets, DIR_TARGET, Platform } from "electron-builder"
import { checkBuildRequestOptions } from "app-builder-lib"
import { readAsar } from "app-builder-lib/out/asar/asar"
@@ -329,9 +328,4 @@ test.ifAll.ifDevOrLinuxCi("posix smart unpack", app({
packed: context => {
expect(context.packager.appInfo.copyright).toBe("Copyright © 2018 Foo Bar")
return verifySmartUnpack(context.getResources(Platform.LINUX))
- }}))
-
-test("wine version", async () => {
- await checkWineVersion(Promise.resolve("1.9.23 (Staging)"))
- await checkWineVersion(Promise.resolve("2.0-rc2"))
-})
+ }}))
\ No newline at end of file
diff --git a/test/src/globTest.ts b/test/src/globTest.ts
index 38a477db488..ad40bdc5f2a 100644
--- a/test/src/globTest.ts
+++ b/test/src/globTest.ts
@@ -109,7 +109,7 @@ test.ifDevOrLinuxCi("failed peer dep", () => {
return assertPack("test-app-one", {
targets: Platform.LINUX.createTarget(DIR_TARGET),
}, {
- installDepsBefore: true,
+ isInstallDepsBefore: true,
projectDirCreated: projectDir => modifyPackageJson(projectDir, data => {
//noinspection SpellCheckingInspection
data.dependencies = {
@@ -131,7 +131,7 @@ test.ifAll.ifDevOrLinuxCi("ignore node_modules", () => {
]
}
}, {
- installDepsBefore: true,
+ isInstallDepsBefore: true,
projectDirCreated: projectDir => modifyPackageJson(projectDir, data => {
//noinspection SpellCheckingInspection
data.dependencies = {
diff --git a/test/src/updater/TestAppAdapter.ts b/test/src/helpers/TestAppAdapter.ts
similarity index 100%
rename from test/src/updater/TestAppAdapter.ts
rename to test/src/helpers/TestAppAdapter.ts
diff --git a/test/src/updater/differentialUpdateTestSnapshotData.ts b/test/src/helpers/differentialUpdateTestSnapshotData.ts
similarity index 100%
rename from test/src/updater/differentialUpdateTestSnapshotData.ts
rename to test/src/helpers/differentialUpdateTestSnapshotData.ts
diff --git a/test/src/helpers/packTester.ts b/test/src/helpers/packTester.ts
index 1870f338b4f..18572f3d89c 100644
--- a/test/src/helpers/packTester.ts
+++ b/test/src/helpers/packTester.ts
@@ -27,7 +27,7 @@ if (process.env.TRAVIS !== "true") {
export const linuxDirTarget = Platform.LINUX.createTarget(DIR_TARGET)
-interface AssertPackOptions {
+export interface AssertPackOptions {
readonly projectDirCreated?: (projectDir: string, tmpDir: TmpDir) => Promise
readonly packed?: (context: PackedContext) => Promise
readonly expectedArtifacts?: Array
@@ -38,7 +38,7 @@ interface AssertPackOptions {
readonly signed?: boolean
readonly signedWin?: boolean
- readonly installDepsBefore?: boolean
+ readonly isInstallDepsBefore?: boolean
readonly publish?: PublishPolicy
}
@@ -114,12 +114,13 @@ export async function assertPack(fixtureName: string, packagerOptions: PackagerO
await executeFinally((async () => {
if (projectDirCreated != null) {
await projectDirCreated(projectDir, tmpDir)
- if (checkOptions.installDepsBefore) {
- // bin links required (e.g. for node-pre-gyp - if package refers to it in the install script)
- await spawn(process.platform === "win32" ? "yarn.cmd" : "yarn", ["install", "--production", "--no-lockfile"], {
- cwd: projectDir,
- })
- }
+ }
+
+ if (checkOptions.isInstallDepsBefore) {
+ // bin links required (e.g. for node-pre-gyp - if package refers to it in the install script)
+ await spawn(process.platform === "win32" ? "yarn.cmd" : "yarn", ["install", "--production", "--no-lockfile"], {
+ cwd: projectDir,
+ })
}
if (packagerOptions.projectDir != null) {
diff --git a/test/src/helpers/updaterTestUtil.ts b/test/src/helpers/updaterTestUtil.ts
index 4c4939d8031..cbdc6f1f586 100644
--- a/test/src/helpers/updaterTestUtil.ts
+++ b/test/src/helpers/updaterTestUtil.ts
@@ -6,7 +6,7 @@ import { outputFile } from "fs-extra-p"
import * as path from "path"
import { TestOnlyUpdaterOptions } from "electron-updater/out/AppUpdater"
import { NsisUpdater } from "electron-updater/out/NsisUpdater"
-import { TestAppAdapter } from "../updater/TestAppAdapter"
+import { TestAppAdapter } from "./TestAppAdapter"
import { assertThat } from "./fileAssert"
import { NodeHttpExecutor } from "builder-util/out/nodeHttpExecutor"
diff --git a/test/src/helpers/winHelper.ts b/test/src/helpers/winHelper.ts
index aabc8633619..1a9315aa0f2 100644
--- a/test/src/helpers/winHelper.ts
+++ b/test/src/helpers/winHelper.ts
@@ -18,9 +18,9 @@ export async function expectUpdateMetadata(context: PackedContext, arch: Arch =
expect(data).toMatchSnapshot()
}
-export async function checkHelpers(resourceDir: string, packElevateHelper: boolean) {
+export async function checkHelpers(resourceDir: string, isPackElevateHelper: boolean) {
const elevateHelperExecutable = path.join(resourceDir, "elevate.exe")
- if (packElevateHelper) {
+ if (isPackElevateHelper) {
await assertThat(elevateHelperExecutable).isFile()
}
else {
diff --git a/test/src/mac/macIconTest.ts b/test/src/mac/macIconTest.ts
index 21e864a6a2b..d5961177c63 100644
--- a/test/src/mac/macIconTest.ts
+++ b/test/src/mac/macIconTest.ts
@@ -8,7 +8,7 @@ async function assertIcon(platformPackager: CheckingMacPackager) {
const file = await platformPackager.getIconPath()
expect(file).toBeDefined()
- const result = await platformPackager.resolveIcon([file!!], "set")
+ const result = await platformPackager.resolveIcon([file!!], [], "set")
result.forEach(it => {
it.file = path.basename(it.file)
})
diff --git a/test/src/protonTest.ts b/test/src/protonTest.ts
index 798d0fd9cfa..4cc20591256 100644
--- a/test/src/protonTest.ts
+++ b/test/src/protonTest.ts
@@ -1,16 +1,41 @@
-import { Platform } from "electron-builder"
-import { app } from "./helpers/packTester"
+import { copyDir } from "builder-util/out/fs"
+import { Arch, Platform } from "electron-builder"
+import { app, AssertPackOptions } from "./helpers/packTester"
+
+const checkOptions: AssertPackOptions = {
+ projectDirCreated: async projectDir => {
+ const src = process.env.PROTON_NATIVE_TEST_NODE_MODULES
+ if (src != null) {
+ await copyDir(src, projectDir + "/node_modules")
+ }
+ },
+ isInstallDepsBefore: false,
+}
test.ifAll.ifMac("mac", app({
targets: Platform.MAC.createTarget(),
config: {
protonNodeVersion: "current",
},
-}))
+}, checkOptions))
test.ifAll.ifLinuxOrDevMac("linux", app({
targets: Platform.LINUX.createTarget("appimage"),
config: {
protonNodeVersion: "current",
},
-}))
\ No newline at end of file
+}, checkOptions))
+
+test.ifAll.ifDevOrWinCi("win", app({
+ targets: Platform.WINDOWS.createTarget("nsis"),
+ config: {
+ protonNodeVersion: "current",
+ },
+}, checkOptions))
+
+test.ifAll.ifDevOrWinCi("win ia32", app({
+ targets: Platform.WINDOWS.createTarget("nsis", Arch.ia32),
+ config: {
+ protonNodeVersion: "current",
+ },
+}, checkOptions))
\ No newline at end of file
diff --git a/test/src/updater/differentialUpdateTest.ts b/test/src/updater/differentialUpdateTest.ts
index 285ce31446a..2faf6502459 100644
--- a/test/src/updater/differentialUpdateTest.ts
+++ b/test/src/updater/differentialUpdateTest.ts
@@ -12,8 +12,8 @@ import * as path from "path"
import { TmpDir } from "temp-file"
import { assertPack, removeUnstableProperties } from "../helpers/packTester"
import { tuneTestUpdater, writeUpdateConfig } from "../helpers/updaterTestUtil"
-import { nsisDifferentialUpdateFakeSnapshot, nsisWebDifferentialUpdateTestFakeSnapshot } from "./differentialUpdateTestSnapshotData"
-import { TestAppAdapter } from "./TestAppAdapter"
+import { nsisDifferentialUpdateFakeSnapshot, nsisWebDifferentialUpdateTestFakeSnapshot } from "../helpers/differentialUpdateTestSnapshotData"
+import { TestAppAdapter } from "../helpers/TestAppAdapter"
/*
diff --git a/yarn.lock b/yarn.lock
index 1e4c34d44ff..64cc9455962 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -14,32 +14,32 @@
dependencies:
"@babel/highlight" "^7.0.0"
-"@babel/core@^7.1.2", "@babel/core@^7.1.5":
- version "7.1.5"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.5.tgz#abb32d7aa247a91756469e788998db6a72b93090"
- integrity sha512-vOyH020C56tQvte++i+rX2yokZcRfbv/kKcw+/BCRw/cK6dvsr47aCzm8oC1XHwMSEWbqrZKzZRLzLnq6SFMsg==
+"@babel/core@^7.1.2", "@babel/core@^7.1.6":
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.6.tgz#3733cbee4317429bc87c62b29cf8587dba7baeb3"
+ integrity sha512-Hz6PJT6e44iUNpAn8AoyAs6B3bl60g7MJQaI0rZEar6ECzh6+srYO1xlIdssio34mPaUtAb1y+XlkkSJzok3yw==
dependencies:
"@babel/code-frame" "^7.0.0"
- "@babel/generator" "^7.1.5"
+ "@babel/generator" "^7.1.6"
"@babel/helpers" "^7.1.5"
- "@babel/parser" "^7.1.5"
+ "@babel/parser" "^7.1.6"
"@babel/template" "^7.1.2"
- "@babel/traverse" "^7.1.5"
- "@babel/types" "^7.1.5"
+ "@babel/traverse" "^7.1.6"
+ "@babel/types" "^7.1.6"
convert-source-map "^1.1.0"
- debug "^3.1.0"
- json5 "^0.5.0"
+ debug "^4.1.0"
+ json5 "^2.1.0"
lodash "^4.17.10"
resolve "^1.3.2"
semver "^5.4.1"
source-map "^0.5.0"
-"@babel/generator@^7.1.5":
- version "7.1.5"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.5.tgz#615f064d13d95f8f9157c7261f68eddf32ec15b3"
- integrity sha512-IO31r62xfMI+wBJVmgx0JR9ZOHty8HkoYpQAjRWUGG9vykBTlGHdArZ8zoFtpUu2gs17K7qTl/TtPpiSi6t+MA==
+"@babel/generator@^7.1.6":
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.6.tgz#001303cf87a5b9d093494a4bf251d7b5d03d3999"
+ integrity sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ==
dependencies:
- "@babel/types" "^7.1.5"
+ "@babel/types" "^7.1.6"
jsesc "^2.5.1"
lodash "^4.17.10"
source-map "^0.5.0"
@@ -226,10 +226,10 @@
esutils "^2.0.2"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.2", "@babel/parser@^7.1.5":
- version "7.1.5"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.5.tgz#20b7d5e7e1811ba996f8a868962ea7dd2bfcd2fc"
- integrity sha512-WXKf5K5HT6X0kKiCOezJZFljsfxKV1FpU8Tf1A7ZpGvyd/Q4hlrJm2EwoH2onaUq3O4tLDp+4gk0hHPsMyxmOg==
+"@babel/parser@^7.1.2", "@babel/parser@^7.1.6":
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.6.tgz#16e97aca1ec1062324a01c5a6a7d0df8dd189854"
+ integrity sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ==
"@babel/plugin-proposal-async-generator-functions@^7.1.0":
version "7.1.0"
@@ -252,10 +252,10 @@
"@babel/helper-replace-supers" "^7.1.0"
"@babel/plugin-syntax-class-properties" "^7.0.0"
-"@babel/plugin-proposal-decorators@^7.1.2":
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.1.2.tgz#79829bd75fced6581ec6c7ab1930e8d738e892e7"
- integrity sha512-YooynBO6PmBgHvAd0fl5e5Tq/a0pEC6RqF62ouafme8FzdIVH41Mz/u1dn8fFVm4jzEJ+g/MsOxouwybJPuP8Q==
+"@babel/plugin-proposal-decorators@^7.1.6":
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.1.6.tgz#460c31edbd01953efe45d491583b3ec31661d689"
+ integrity sha512-U42f8KhUbtlhUDyV/wK4Rq/wWh8vWyttYABckG/v0vVnMPvayOewZC/83CbVdmyP+UhEqI368FEQ7hHMfhBpQA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/helper-replace-supers" "^7.1.0"
@@ -710,9 +710,9 @@
"@babel/plugin-syntax-jsx" "^7.0.0"
"@babel/plugin-transform-react-jsx@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz#524379e4eca5363cd10c4446ba163f093da75f3e"
- integrity sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ==
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.1.6.tgz#e6188e7d2a2dcd2796d45a87f8b0a8c906f57d1a"
+ integrity sha512-iU/IUlPEYDRwuqLwqVobzPAZkBOQoZ9xRTBmj6ANuk5g/Egn/zdNGnXlSoKeNmKoYVeIRxx5GZhWmMhLik8dag==
dependencies:
"@babel/helper-builder-react-jsx" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0"
@@ -771,10 +771,10 @@
"@babel/helper-regex" "^7.0.0"
regexpu-core "^4.1.3"
-"@babel/preset-env@^7.1.5":
- version "7.1.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.5.tgz#a28b5482ca8bc2f2d0712234d6c690240b92495d"
- integrity sha512-pQ+2o0YyCp98XG0ODOHJd9z4GsSoV5jicSedRwCrU8uiqcJahwQiOq0asSZEb/m/lwyu6X5INvH/DSiwnQKncw==
+"@babel/preset-env@^7.1.6":
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.6.tgz#a0bf4b96b6bfcf6e000afc5b72b4abe7cc13ae97"
+ integrity sha512-YIBfpJNQMBkb6MCkjz/A9J76SNCSuGVamOVBgoUkLzpJD/z8ghHi9I42LQ4pulVX68N/MmImz6ZTixt7Azgexw==
dependencies:
"@babel/helper-module-imports" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0"
@@ -838,37 +838,30 @@
"@babel/parser" "^7.1.2"
"@babel/types" "^7.1.2"
-"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5":
- version "7.1.5"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.5.tgz#5aafca2039aa058c104cf2bfeb9fc4a857ccbca9"
- integrity sha512-eU6XokWypl0MVJo+MTSPUtlfPePkrqsF26O+l1qFGlCKWwmiYAYy2Sy44Qw8m2u/LbPCsxYt90rghmqhYMGpPA==
+"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.1.6":
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.6.tgz#c8db9963ab4ce5b894222435482bd8ea854b7b5c"
+ integrity sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==
dependencies:
"@babel/code-frame" "^7.0.0"
- "@babel/generator" "^7.1.5"
+ "@babel/generator" "^7.1.6"
"@babel/helper-function-name" "^7.1.0"
"@babel/helper-split-export-declaration" "^7.0.0"
- "@babel/parser" "^7.1.5"
- "@babel/types" "^7.1.5"
- debug "^3.1.0"
+ "@babel/parser" "^7.1.6"
+ "@babel/types" "^7.1.6"
+ debug "^4.1.0"
globals "^11.1.0"
lodash "^4.17.10"
-"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.5":
- version "7.1.5"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.5.tgz#12fe64e91a431234b7017b4227a78cc0eec4e081"
- integrity sha512-sJeqa/d9eM/bax8Ivg+fXF7FpN3E/ZmTrWbkk6r+g7biVYfALMnLin4dKijsaqEhpd2xvOGfQTkQkD31YCVV4A==
+"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.5", "@babel/types@^7.1.6":
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.6.tgz#0adb330c3a281348a190263aceb540e10f04bcce"
+ integrity sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==
dependencies:
esutils "^2.0.2"
lodash "^4.17.10"
to-fast-properties "^2.0.0"
-"@mischnic/async-hooks@^0.0.4":
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/@mischnic/async-hooks/-/async-hooks-0.0.4.tgz#722571cc541a77afdc30365e984c4d9953f5f584"
- integrity sha512-mJL/Rckke7oIR8c1Dk+40Y0a+Ss712hyJqROOurl5VE8gQY+GbbebKcNuWIRxlZTrQQq8mfo7oE9xKZXrtQTjQ==
- dependencies:
- es6-shim "^0.35.3"
-
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@@ -935,9 +928,9 @@
integrity sha512-+LiY4f3HMAgQGjte8Lg4K6xpTR+glwZolVrreU+ShACr6H/IzYN1VQAitHVeQrNKgZeuOegxE3IACh7Jo2qk0w==
"@types/node@*":
- version "10.12.5"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.5.tgz#7e7ea1a9b34d2c8d704cb0b755dffbcda34741ad"
- integrity sha512-GzdHjq3t3eGLMv92Al90Iq+EoLL+86mPfQhuglbBFO7HiLdC/rkt+zrzJJumAiBF6nsrBWhou22rPW663AAyFw==
+ version "10.12.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.8.tgz#d0a3ab5a6e61458c492304e2776ac136b81db927"
+ integrity sha512-INamyRZG4rW3lDCUmwVd5Xho/bXvQm/v1yP8V0UN1RuInU7RoWoaO570b+yLX4Ia/0szsx1wa8VzcsVlsvbWLA==
"@types/sanitize-filename@^1.1.28":
version "1.1.28"
@@ -987,9 +980,9 @@ acorn-globals@^4.1.0:
acorn-walk "^6.0.1"
acorn-walk@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.0.tgz#c957f4a1460da46af4a0388ce28b4c99355b0cbc"
- integrity sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
+ integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==
acorn@^5.5.3:
version "5.7.3"
@@ -1065,10 +1058,10 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
-app-builder-bin@2.4.3:
- version "2.4.3"
- resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.4.3.tgz#00ac5032bfa8b62e634705f5db42f114d89c12d7"
- integrity sha512-98j7jJXcp20plL0JbcAvofmmGDbYT1fUilETCA+3V2FVS4Uw2/Q127pwsHgmY8xFFcpmS51suCeuFv9Gk3fmZg==
+app-builder-bin@2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.5.0.tgz#c19f2d8b69f7db6da409e5ea099c5aaccb18ecab"
+ integrity sha512-Nz/56Lu/xlw8pjr9OB2/ySVsREtJZIlR1MTtHXW+SDrfVH7pCw5NOIIwDD5lRn32g/+Jgm92fVbHTt1ALa+OyA==
append-transform@^0.4.0:
version "0.4.0"
@@ -1204,11 +1197,6 @@ arrify@^1.0.1:
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
-asap@~2.0.3:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
- integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
-
asn1@~0.2.3:
version "0.2.4"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
@@ -1258,15 +1246,6 @@ atob@^2.1.1:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-autogypi@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/autogypi/-/autogypi-0.2.2.tgz#258bab5f7857755b09beac6a641fea130ff4622d"
- integrity sha1-JYurX3hXdVsJvqxqZB/qEw/0Yi0=
- dependencies:
- bluebird "^3.4.0"
- commander "~2.9.0"
- resolve "~1.1.7"
-
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@@ -1502,13 +1481,6 @@ bl@^1.0.0:
readable-stream "^2.3.5"
safe-buffer "^5.1.1"
-block-stream@*:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
- integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
- dependencies:
- inherits "~2.0.0"
-
bluebird-lst@^1.0.5, bluebird-lst@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.6.tgz#89bc4de0a357373605c8781f293f7b06d454f869"
@@ -1516,7 +1488,7 @@ bluebird-lst@^1.0.5, bluebird-lst@^1.0.6:
dependencies:
bluebird "^3.5.2"
-bluebird@^3.4.0, bluebird@^3.5.0, bluebird@^3.5.2, bluebird@~3.5.0:
+bluebird@^3.5.0, bluebird@^3.5.2, bluebird@~3.5.0:
version "3.5.3"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
@@ -1810,7 +1782,7 @@ collection-visit@^1.0.0:
map-visit "^1.0.0"
object-visit "^1.0.0"
-color-convert@^1.9.0, color-convert@^1.9.1:
+color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -1827,27 +1799,6 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-color-name@^1.0.0:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-color-string@^1.5.2:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
- integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
- dependencies:
- color-name "^1.0.0"
- simple-swizzle "^0.2.2"
-
-color@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc"
- integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==
- dependencies:
- color-convert "^1.9.1"
- color-string "^1.5.2"
-
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
@@ -1897,13 +1848,6 @@ commander@~2.17.1:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
-commander@~2.9.0:
- version "2.9.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
- integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
- dependencies:
- graceful-readlink ">= 1.0.0"
-
common-sequence@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/common-sequence/-/common-sequence-1.0.2.tgz#30e07f3f8f6f7f9b3dee854f20b2d39eee086de8"
@@ -1970,11 +1914,6 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-core-js@^1.0.0:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
- integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
-
core-js@^2.4.0, core-js@^2.5.0:
version "2.5.7"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
@@ -2336,18 +2275,6 @@ electron-to-chromium@^1.3.82:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.84.tgz#2e55df59e818f150a9f61b53471ebf4f0feecc65"
integrity sha512-IYhbzJYOopiTaNWMBp7RjbecUBsbnbDneOP86f3qvS0G0xfzwNSvMJpTrvi5/Y1gU7tg2NAgeg8a8rCYvW9Whw==
-emscripten-library-decorator@~0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/emscripten-library-decorator/-/emscripten-library-decorator-0.2.2.tgz#d035f023e2a84c68305cc842cdeea38e67683c40"
- integrity sha1-0DXwI+KoTGgwXMhCze6jjmdoPEA=
-
-encoding@^0.1.11:
- version "0.1.12"
- resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
- integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=
- dependencies:
- iconv-lite "~0.4.13"
-
end-of-stream@^1.0.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
@@ -2389,11 +2316,6 @@ es-to-primitive@^1.1.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
-es6-shim@^0.35.3:
- version "0.35.4"
- resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.4.tgz#8d5a4109756383d3f0323421089c423acf8378f1"
- integrity sha512-oJidbXjN/VWXZJs41E9JEqWzcFbjt43JupimIoVX82Thzt5qy1CiYezdhRmWkj3KOuwJ106IG/ZZrcFC6fgIUQ==
-
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
@@ -2593,19 +2515,6 @@ fb-watchman@^2.0.0:
dependencies:
bser "^2.0.0"
-fbjs@^0.8.16:
- version "0.8.17"
- resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
- integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=
- dependencies:
- core-js "^1.0.0"
- isomorphic-fetch "^2.1.1"
- loose-envify "^1.0.0"
- object-assign "^4.1.0"
- promise "^7.1.1"
- setimmediate "^1.0.5"
- ua-parser-js "^0.7.18"
-
file-set@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/file-set/-/file-set-2.0.1.tgz#db9bc4b70a7e5ba81c9d279c20a37f13369c7850"
@@ -2775,16 +2684,6 @@ fsevents@^1.2.3:
nan "^2.9.2"
node-pre-gyp "^0.10.0"
-fstream@^1.0.0, fstream@^1.0.2:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
- integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=
- dependencies:
- graceful-fs "^4.1.2"
- inherits "~2.0.0"
- mkdirp ">=0.5 0"
- rimraf "2"
-
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
@@ -2859,17 +2758,6 @@ glob-to-regexp@^0.3.0:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
-glob@^6.0.1:
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
- integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=
- 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.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.2:
version "7.1.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
@@ -2890,9 +2778,9 @@ global-dirs@^0.1.0:
ini "^1.3.4"
globals@^11.1.0:
- version "11.8.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.8.0.tgz#c1ef45ee9bed6badf0663c5cb90e8d1adec1321d"
- integrity sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==
+ version "11.9.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249"
+ integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==
globals@^9.18.0:
version "9.18.0"
@@ -2934,11 +2822,6 @@ graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3,
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
-"graceful-readlink@>= 1.0.0":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
- integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
-
growly@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
@@ -3041,11 +2924,6 @@ home-or-tmp@^2.0.0:
os-homedir "^1.0.0"
os-tmpdir "^1.0.1"
-home-path@^1.0.1:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/home-path/-/home-path-1.0.6.tgz#d549dc2465388a7f8667242c5b31588d29af29fc"
- integrity sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw==
-
hosted-git-info@^2.1.4, hosted-git-info@^2.7.1:
version "2.7.1"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
@@ -3067,7 +2945,7 @@ http-signature@~1.2.0:
jsprim "^1.2.2"
sshpk "^1.7.0"
-iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
+iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -3117,7 +2995,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
@@ -3163,11 +3041,6 @@ is-arrayish@^0.2.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-is-arrayish@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
- integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-
is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -3386,7 +3259,7 @@ is-retry-allowed@^1.0.0:
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=
-is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
+is-stream@^1.0.0, is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
@@ -3447,14 +3320,6 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-isomorphic-fetch@^2.1.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
- integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=
- dependencies:
- node-fetch "^1.0.1"
- whatwg-fetch ">=0.10.0"
-
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -4012,7 +3877,7 @@ json-stringify-safe@~5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-json5@^0.5.0, json5@^0.5.1:
+json5@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
@@ -4133,33 +3998,6 @@ levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
-libui-download@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/libui-download/-/libui-download-1.1.0.tgz#16981e196c8e13fec3ed3d2e03d75c0247a7d466"
- integrity sha512-kn/VrmvI4zUNjH+GsUelLMKNiuNG/T9q7eEWXSLXQwcpQvhsvUZQO8VxeiNfYw4wMqnYUOyPynbx8qfXJt3ZaQ==
- dependencies:
- debug "^2.2.0"
- home-path "^1.0.1"
- mkdirp "^0.5.0"
- mv "^2.0.3"
- pify "^2.3.0"
- pinkie-promise "^2.0.1"
- rc "^1.1.2"
- regenerator-runtime "^0.9.5"
- request "^2.85.0"
- tar "^4.4.0"
-
-libui-node@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/libui-node/-/libui-node-0.2.1.tgz#ea487b8dfff0a32a6fa3e8e74889699bed3598d1"
- integrity sha512-VVpghzPFPccw7+9PjHEyWUIJ6LszKyT1NZ+bPwL8nEDdH2kV6gAW2HdWPr47OF6sshkUpZL9OqEWSrEMAsCP+w==
- dependencies:
- "@mischnic/async-hooks" "^0.0.4"
- autogypi "^0.2.2"
- libui-download "^1.1.0"
- nbind "^0.3.14"
- node-gyp "^3.3.1"
-
load-json-file@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -4267,7 +4105,7 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.5.1:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
-loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
+loose-envify@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -4302,9 +4140,9 @@ makeerror@1.0.x:
tmpl "1.0.x"
map-age-cleaner@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74"
- integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
+ integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
dependencies:
p-defer "^1.0.0"
@@ -4423,7 +4261,7 @@ mimic-fn@^1.0.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
-"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
+minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@@ -4473,7 +4311,7 @@ mkdirp2@^1.0.3:
resolved "https://registry.yarnpkg.com/mkdirp2/-/mkdirp2-1.0.4.tgz#56de1f8f5c93cf2199906362eba0f9f262ee4437"
integrity sha512-Q2PKB4ZR4UPtjLl76JfzlgSCUZhSV1AXQgAZa1qt5RiaALFjP/CDrGvFBrOz7Ck6McPcwMAxTsJvWOUjOU8XMw==
-"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
+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"
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
@@ -4495,15 +4333,6 @@ ms@^2.1.1:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-mv@^2.0.3:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2"
- integrity sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=
- dependencies:
- mkdirp "~0.5.1"
- ncp "~2.0.0"
- rimraf "~2.4.0"
-
nan@^2.9.2:
version "2.11.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766"
@@ -4531,20 +4360,6 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-nbind@^0.3.14:
- version "0.3.15"
- resolved "https://registry.yarnpkg.com/nbind/-/nbind-0.3.15.tgz#20c74d77d54e28627ab8268c2767f7e40aef8c53"
- integrity sha512-TrKLNRj5D8wZRJb7XmUNbA1W3iTigAEpm3qaGig5bEWY/iCT2IQBgBc2EUGO59FbRIGhx5hB/McVwqxlSGScVw==
- dependencies:
- emscripten-library-decorator "~0.2.2"
- mkdirp "~0.5.1"
- nan "^2.9.2"
-
-ncp@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3"
- integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=
-
needle@^2.2.1:
version "2.2.4"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
@@ -4559,32 +4374,6 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-node-fetch@^1.0.1:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
- integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
- dependencies:
- encoding "^0.1.11"
- is-stream "^1.0.1"
-
-node-gyp@^3.3.1:
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
- integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==
- dependencies:
- fstream "^1.0.0"
- glob "^7.0.3"
- graceful-fs "^4.1.2"
- mkdirp "^0.5.0"
- nopt "2 || 3"
- npmlog "0 || 1 || 2 || 3 || 4"
- osenv "0"
- request "^2.87.0"
- rimraf "2"
- semver "~5.3.0"
- tar "^2.0.0"
- which "1"
-
node-int64@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
@@ -4623,7 +4412,7 @@ node-releases@^1.0.1:
dependencies:
semver "^5.3.0"
-"nopt@2 || 3", nopt@^3.0.1:
+nopt@^3.0.1:
version "3.0.6"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
@@ -4687,7 +4476,7 @@ npm-run-path@^2.0.0:
dependencies:
path-key "^2.0.0"
-"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2:
+npmlog@^4.0.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
@@ -4712,7 +4501,7 @@ oauth-sign@~0.9.0:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-object-assign@^4.1.0, object-assign@^4.1.1:
+object-assign@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -4826,7 +4615,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-osenv@0, osenv@^0.1.4:
+osenv@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
@@ -5006,7 +4795,7 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
-pify@^2.0.0, pify@^2.3.0:
+pify@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
@@ -5016,7 +4805,7 @@ pify@^3.0.0:
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
-pinkie-promise@^2.0.0, pinkie-promise@^2.0.1:
+pinkie-promise@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
@@ -5087,13 +4876,6 @@ process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
-promise@^7.1.1:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
- integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
- dependencies:
- asap "~2.0.3"
-
prompts@^0.1.9:
version "0.1.14"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2"
@@ -5102,27 +4884,6 @@ prompts@^0.1.9:
kleur "^2.0.1"
sisteransi "^0.1.1"
-prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2:
- version "15.6.2"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102"
- integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==
- dependencies:
- loose-envify "^1.3.1"
- object-assign "^4.1.1"
-
-proton-native@1.1.10:
- version "1.1.10"
- resolved "https://registry.yarnpkg.com/proton-native/-/proton-native-1.1.10.tgz#18fe140776650d8a9fe53ccbf9df7d7c809f4d03"
- integrity sha512-dSpkUPdBchQpqgF/x9jhbPVG1L8diubMveDDS6Sh7gfytCq/WFETmhNyLxu2dnB49JQbyn2NDELWGYwxY5GXog==
- dependencies:
- color "^3.0.0"
- fbjs "^0.8.16"
- libui-node "^0.2.1"
- prop-types "^15.6.1"
- react "^16.3.2"
- react-reconciler "^0.11.0"
- svg-path-parser "^1.1.0"
-
prr@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
@@ -5167,7 +4928,7 @@ randomatic@^3.0.0:
kind-of "^6.0.0"
math-random "^1.0.1"
-rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.7:
+rc@^1.0.1, rc@^1.1.6, rc@^1.2.7:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -5177,26 +4938,6 @@ rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.7:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
-react-reconciler@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.11.0.tgz#b072b5a87bee85a0716f9ce0d8bc759c128c40ac"
- integrity sha512-a83YVKKZbE5/aDRN+pZNxckrOZprxa0wr5v+yExpYd8cdv9XfC9ipb7rsN/ztn0kGVBSFqXGwBfg7SBeB6w94g==
- dependencies:
- fbjs "^0.8.16"
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
- prop-types "^15.6.0"
-
-react@^16.3.2:
- version "16.6.1"
- resolved "https://registry.yarnpkg.com/react/-/react-16.6.1.tgz#ee2aef4f0a09e494594882029821049772f915fe"
- integrity sha512-OtawJThYlvRgm9BXK+xTL7BIlDx8vv21j+fbQDjRRUyok6y7NyjlweGorielTahLZHYIdKUoK2Dp9ByVWuMqxw==
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
- prop-types "^15.6.2"
- scheduler "^0.11.0"
-
read-config-file@3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-3.2.0.tgz#50a2756a9a128ab9dcbe087e2724c512e3d0ccd1"
@@ -5317,11 +5058,6 @@ regenerator-runtime@^0.11.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
-regenerator-runtime@^0.9.5:
- version "0.9.6"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029"
- integrity sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=
-
regenerator-transform@^0.13.3:
version "0.13.3"
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb"
@@ -5421,7 +5157,7 @@ request-promise-native@^1.0.5:
stealthy-require "^1.1.0"
tough-cookie ">=2.3.3"
-request@^2.85.0, request@^2.87.0:
+request@^2.87.0:
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
@@ -5486,7 +5222,7 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-resolve@1.1.7, resolve@~1.1.7:
+resolve@1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
@@ -5503,20 +5239,13 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1:
+rimraf@^2.5.4, rimraf@^2.6.1:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
dependencies:
glob "^7.0.5"
-rimraf@~2.4.0:
- version "2.4.5"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da"
- integrity sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=
- dependencies:
- glob "^6.0.1"
-
rsvp@^3.3.3:
version "3.6.2"
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a"
@@ -5567,14 +5296,6 @@ sax@^1.2.4:
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-scheduler@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.0.tgz#def1f1bfa6550cc57981a87106e65e8aea41a6b5"
- integrity sha512-MAYbBfmiEHxF0W+c4CxMpEqMYK+rYF584VP/qMKSiHM6lTkBKKYOJaDiSILpJHla6hBOsVd6GucPL46o2Uq3sg==
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
-
semver-diff@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
@@ -5587,11 +5308,6 @@ semver-diff@^2.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
-semver@~5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
- integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
-
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
@@ -5617,11 +5333,6 @@ set-value@^2.0.0:
is-plain-object "^2.0.3"
split-string "^3.0.1"
-setimmediate@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
- integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
-
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -5644,13 +5355,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
-simple-swizzle@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
- integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
- dependencies:
- is-arrayish "^0.3.1"
-
sisteransi@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce"
@@ -5795,9 +5499,9 @@ sshpk@^1.7.0:
tweetnacl "~0.14.0"
stack-utils@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620"
- integrity sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8"
+ integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==
stat-mode@^0.2.2:
version "0.2.2"
@@ -5928,11 +5632,6 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
-svg-path-parser@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/svg-path-parser/-/svg-path-parser-1.1.0.tgz#e16b4b39df0d2b0d39e8347db79fdda1453a6046"
- integrity sha1-4WtLOd8NKw056DR9t5/doUU6YEY=
-
symbol-tree@^3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
@@ -5967,16 +5666,7 @@ tar-stream@^1.5.0:
to-buffer "^1.1.1"
xtend "^4.0.0"
-tar@^2.0.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
- integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
- dependencies:
- block-stream "*"
- fstream "^1.0.2"
- inherits "2"
-
-tar@^4, tar@^4.4.0:
+tar@^4:
version "4.4.8"
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
@@ -6226,11 +5916,6 @@ typical@^2.4.2, typical@^2.6.0, typical@^2.6.1:
resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d"
integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=
-ua-parser-js@^0.7.18:
- version "0.7.19"
- resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b"
- integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==
-
uglify-js@^3.1.4:
version "3.4.9"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
@@ -6448,11 +6133,6 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
dependencies:
iconv-lite "0.4.24"
-whatwg-fetch@>=0.10.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
- integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==
-
whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz#a3d58ef10b76009b042d03e25591ece89b88d171"
@@ -6481,7 +6161,7 @@ which-module@^2.0.0:
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which@1, which@^1.2.12, which@^1.2.9, which@^1.3.0:
+which@^1.2.12, which@^1.2.9, which@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==