diff --git a/Jenkinsfile b/Jenkinsfile
index 6285faa0b8..0275778f7e 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -19,21 +19,48 @@ To set up pipeline in Jenkins: New Item > Pipeline > name it > OK > Scroll to Pi
Note: this pipeline uses a private repository as well as private shared library which is not available externally.
*/
-@Library('jenkins-shared-lib')
+
+@Library('jenkins-shared-lib') _
import devops.waves.*
ut = new utils()
scripts = new scripts()
+wallet = new wallet()
+
def buildTasks = [:]
-def deployTasks = [:]
-def remote_destination = [:]
-def artifactsDir = 'out'
-def container_info = [:]
buildTasks.failFast = true
-def repo_url = 'https://github.com/wavesplatform/WavesGUI.git'
+def deployTasks = [:]
+def electronContainerTasks = [:]
+def electronMacTasks = [:]
+def electronGlobalTasks = [:]
+def winElectronBuildTasks = [:]
+def macElectronBuildTasks = [:]
+def source = false
+def action = false
+def repoUrl = 'https://github.com/wavesplatform/WavesGUI.git'
def deploymentFile = "./kubernetes/waves-wallet-stage-io/deployment.yaml"
-def pipeline_tasks = ['build': false, 'deploy': false, 'electron': false]
-def pipeline_status = [:]
-def pipeline_trigger_token = 'wavesGuiGithubToken'
+def pipelineTriggerToken = 'wavesGuiGithubToken'
+def gitDescribeTag = false
+def windowsSingCertName = 'WavesPlatformLTD.pfx'
+def macSingCertName = 'mac_app.p12'
+def itemTemplate = [niceName: false, platform: false, dockerTag: false, containerInfo: false, buildTask: false, buildSuccess: false, buildArtifacts: false, deployTask: false, deploySuccess: false, deployArtifacts: false, remoteDestination: false]
+def items = [wallet: itemTemplate.clone(), walletElectron: itemTemplate.clone(), electron: itemTemplate.clone()]
+def slackChannelBuild = 'docker_builds'
+def slackChannelDeploy = "waves-deploy-alerts"
+items['wallet'].platform = 'web'
+items['wallet'].niceName = 'wallet'
+items['electron'].niceName = 'electron'
+items['walletElectron'].platform = 'desktop'
+items['walletElectron'].niceName = 'wallet-electron'
+
+def branchesOrTagsScript(String imageName, String repoUrl){
+ return """
+ if (binding.variables.get('action') == 'Deploy to stage' || binding.variables.get('action').contains('PROD')) {
+ ${getDockerTagsScript(imageName, Constants.WAVES_DOCKER_REGISTRY_CREDS, 'Waves')}
+ } else {
+ ${getGitBranchesScript(repoUrl)}
+ }
+ """
+}
properties([
@@ -41,23 +68,23 @@ properties([
parameters([
// action - choose if you want to deploy or build or both
- ut.choiceParameterObject('action', scripts.getActions()),
+ ut.choiceParameterObject('action', "return ['Build', 'Build and Deploy to stage', 'Deploy to stage', 'Deploy PROD mainnet', 'Deploy PROD testnet', 'Deploy PROD stagenet', 'Build Electron']"),
// source depends on choice parameter above and dynamically
// loads either Git repo branches for building or Docker Registry tags for deploy
- ut.cascadeChoiceParameterObject('source', scripts.getBranchesOrTags('waves/wallet', 'Waves', repo_url), 'action', 'PARAMETER_TYPE_SINGLE_SELECT', true),
+ ut.cascadeChoiceParameterObject('source', branchesOrTagsScript('waves/wallet', repoUrl), 'action', 'PARAMETER_TYPE_SINGLE_SELECT', true),
// image to deploy from - depends on choice parameter above and used if deploying is specified.
- ut.cascadeChoiceParameterObject('image', scripts.getImages(), 'action'),
+ ut.cascadeChoiceParameterObject('image', wallet.getImages(), 'action'),
// network is either mainnet, testnet or stagenet - depends on choice parameter above and used if deploying is specified.
- ut.cascadeChoiceParameterObject('network', scripts.getNetworks(), 'action'),
+ ut.cascadeChoiceParameterObject('network', wallet.getNetworks(), 'action'),
// destination is a remote server to deploy to - depends on choice parameter above and used if deploying is specified.
- ut.cascadeChoiceParameterObject('destination', scripts.getDestinations(Constants.WAVES_WALLET_PROD_DOMAIN_NAMES, Constants.WAVES_WALLET_STAGE_SERVERS, true), 'action,image'),
+ ut.cascadeChoiceParameterObject('destination', wallet.getDestinations(wallet.wavesWalletProdDomainNames(), wallet.wavesWalletStageServers(), true), 'action,image'),
// confirm is an extra check before we deploy to prod
- ut.cascadeChoiceParameterObject('confirm', scripts.getConfirms(), 'action', 'PARAMETER_TYPE_CHECK_BOX'),
+ ut.cascadeChoiceParameterObject('confirm', wallet.getConfirms(), 'action', 'PARAMETER_TYPE_CHECK_BOX'),
]),
// this is a trigger to run a build when hooks from GitHub received
@@ -71,45 +98,49 @@ properties([
causeString: "Triggered by GitHub Webhook",
printContributedVariables: true,
printPostContent: true,
- token: pipeline_trigger_token ]
+ token: pipelineTriggerToken ]
])
])
-stage('Aborting this build'){
- // On the first launch pipeline doesn't have any parameters configured and must skip all the steps
- if (env.BUILD_NUMBER == '1'){
- echo "This is the first run of the pipeline! It is now should be configured and ready to go!"
+stage('Build info'){
+ echo "Parameters specified: ${params}"
+ action = params.action
+ if ((params.action.contains('PROD') && ! params.confirm) || ! params.source || ! params.source.length() || params.source.contains('Please select parameter')){
+ if (params.action.contains('PROD'))
+ echo "Aborting this build. Deploy to PROD ${params.network} was not confirmed."
+ else
+ echo "Aborting this build. Variable 'source' not defined."
currentBuild.result = Constants.PIPELINE_ABORTED
return
}
-
- if (! source ) {
- echo "Aborting this build. Please run it again with the required parameters specified."
- currentBuild.result = Constants.PIPELINE_ABORTED
- return
+ source = params.source
+ if (action.contains('Electron')){
+ items['electron'].buildTask = true
}
- if (( action.contains('PROD') ) && ! confirm){
- echo "Aborting this build. Deploy to PROD ${network} was not confirmed."
- currentBuild.result = Constants.PIPELINE_ABORTED
- return
+ else if (action.contains('Build')){
+ items.each{
+ if (it.key != 'electron'){
+ item = it.value
+ item.buildTask = true
+ item.dockerTag = source + '.latest'
+ }
+ }
+ }
+ if (action.contains('Deploy')){
+ items.each{
+ item = it.value
+ if (!action.contains('Build'))
+ item.dockerTag = source
+ if (it.key != 'electron' && (item.niceName == params.image || params.image == "both"))
+ item.deployTask = true
+ }
}
- else
- echo "Parameters are specified:\n" +
- "action: ${action}\n" +
- "source: ${source}\n" +
- "image: ${image}\n" +
- "destination: ${destination}\n" +
- "network: ${network}"
- if (action.contains('Deploy')) pipeline_tasks['deploy'] = true
- if (action.contains('Build') && ! action.contains('Electron')) pipeline_tasks['build'] = true
- if (action.contains('Electron')) pipeline_tasks['electron'] = true
}
-
if (currentBuild.result == Constants.PIPELINE_ABORTED){
return
}
-
-timeout(time:20, unit:'MINUTES') {
+println items
+timeout(time:40, unit:'MINUTES') {
node('buildagent'){
currentBuild.result = Constants.PIPELINE_SUCCESS
timestamps {
@@ -121,168 +152,226 @@ timeout(time:20, unit:'MINUTES') {
sh 'env'
step([$class: 'WsCleanup'])
if (action.contains('Build')) {
- ut.checkoutRelative(source, repo_url, 'WavesGUI', '')
-
- sh """
- mkdir ${artifactsDir}
- cp -R ./WavesGUI/build-wallet/ ./WavesGUI/build-wallet-desktop/
- cp -R ./WavesGUI/ ./WavesGUI_tmp/
- cp -R ./WavesGUI_tmp/ ./WavesGUI/build-wallet/WavesGUI/
- mv ./WavesGUI_tmp/ ./WavesGUI/build-wallet-desktop/WavesGUI/
- """
+ gitCheckout(branch: source, url: repoUrl, relativeTargetDir: 'WavesGUI')
+
+
+ dir ('WavesGUI'){
+ gitDescribeTag = ut.shWithOutput("git describe --tags")
+ }
+
if (action.contains('Electron')) {
- withCredentials([file(credentialsId: 'electron-signing-cert', variable: 'signingCert'),
- file(credentialsId: 'electron-mac-signing-cert', variable: 'signingCertMac')]) {
- sh "cp '${signingCert}' 'WavesGUI/WavesPlatformLTD.pfx'"
- sh "cp '${signingCertMac}' 'WavesGUI/mac_app.p12'"
- stash includes: '**', name: 'repo', useDefaultExcludes: false
+ dir ('WavesGUI'){
+ withCredentials([
+ file(credentialsId: 'electron-signing-cert', variable: 'signingCert'),
+ file(credentialsId: 'electron-mac-signing-cert', variable: 'signingCertMac'),
+ string(credentialsId: 'electron-signing-cert-passphrase', variable: 'winCertPass'),
+ string(credentialsId: 'electron-mac-signing-cert-passphrase', variable: 'macCertPass')
+ ]){
+ sh "cp '${signingCert}' '${windowsSingCertName}'"
+ sh "cp '${signingCertMac}' '${macSingCertName}'"
+ writeFile file: './jenkinsBuildElectronScript.sh', text: wallet.wavesElectronInstallScript(windowsSingCertName, winCertPass, macSingCertName, macCertPass)
+ sh "chmod 700 '${windowsSingCertName}' '${macSingCertName}' 'jenkinsBuildElectronScript.sh'"
+ }
+
}
}
- source += '.latest'
+
+ stash includes: 'WavesGUI/**,', name: 'repo'
+
+ // this two lines are for compatibility with the branches that already exist
+ // after 'build-wallet' files are replaced in all branches in the repo - these checks can be removed
+ // and commented code should be uncommented
+ // once 'newApproach' is merged to dev/master - rename the branch in the string below:
+ gitCheckout(branch: 'newApproach', url: repoUrl, relativeTargetDir: 'newTemplate')
+
+ dir('newTemplate/build-wallet'){
+ stash includes: '**', name: 'docker', useDefaultExcludes: false
+ }
+
+ // dir('WavesGUI/build-wallet'){
+ // stash includes: '**', name: 'docker', useDefaultExcludes: false
+ // }
}
if (action.contains('Deploy')) {
- ut.checkoutRelative('master', Constants.KUBERNETES_REPO, 'kubernetes', Constants.KUBERNETES_REPO_CREDS)
+ gitCheckout(url: Constants.KUBERNETES_REPO, relativeTargetDir: 'kubernetes', repoCreds: Constants.KUBERNETES_REPO_CREDS)
}
- }
- ['wallet', 'wallet-electron'].each{ serviceName ->
- buildTasks["Building " + serviceName] = {
- dir(Constants.DOCKERFILE_LOCATION_MAP[serviceName]) {
- stage("Building " + serviceName) {
- pipeline_status["built-${serviceName}"] = false
- if (pipeline_tasks['build']) {
- def platform = (serviceName == 'wallet') ? 'web' : 'desktop'
-
- // configure nginx template
- def waves_wallet_nginx_map = Constants.WAVES_WALLET_NGINX_MAP.clone()
- waves_wallet_nginx_map.nginx_platform = "${platform}"
- String nginxConfFileContent = ut.replaceTemplateVars('./nginx/default_template.conf', waves_wallet_nginx_map)
- writeFile file: './nginx/default.conf', text: nginxConfFileContent
-
- // configure Dockerfile template
- def waves_wallet_dockerfile_map = [jenkins_platform: platform, trading_view_token: '$trading_view_token']
- String dockerfileConfFileContent = ut.replaceTemplateVars('./Dockerfile_template', waves_wallet_dockerfile_map)
- writeFile file: './Dockerfile', text: dockerfileConfFileContent
-
- // configure a page with container_info which
- // contains all info about Jenkins build and git parameters
- container_info["${serviceName}"] = "" +
- "
Job name: ${env.JOB_NAME}
" +
- "Job build tag: ${env.BUILD_TAG}
" +
- "Docker image: ${Constants.DOCKER_REGISTRY}/waves/${serviceName}:${source}
" +
- "Web environment: \${WEB_ENVIRONMENT}
"
-
- writeFile file: './info.html', text: container_info["${serviceName}"]
-
- // copy all the generated text files
- sh """
- cp ./nginx/default.conf "${env.WORKSPACE}/${artifactsDir}/default.conf-${serviceName}"
- cp ./Dockerfile "${env.WORKSPACE}/${artifactsDir}/Dockerfile-${serviceName}"
- cp ./info.html "${env.WORKSPACE}/${artifactsDir}/info.html-${serviceName}"
- """
-
- // run build
- ut.buildDockerImage('waves/' + serviceName, source.split("\\.")[0], "--build-arg trading_view_token=${Constants.WAVES_WALLET_TRADING_VIEW_TOKEN} --build-arg platform=${platform}")
- pipeline_status["built-${serviceName}"] = true
- ut.notifySlack("docker_builds",
- currentBuild.result,
- "Built image: ${Constants.DOCKER_REGISTRY}/waves/${serviceName}:${source}")
+ }
+ items.each{
+ def item = it.value
+ buildTasks["Building " + item.niceName] = {
+ stage("Building " + item.niceName) {
+ dir(it.key){
+ if (item.buildTask) {
+ if (it.key == 'electron'){
+ item.buildArtifacts = it.key + '-electronArtifacts-'
+ electronGlobalTasks['container']={
+ node("wavesnode||vostok"){
+ step([$class: 'WsCleanup'])
+ electronContainerTasks['linux'] = {
+ dir('linux'){
+ try{
+ docker.image('node').inside("-u 0"){
+ unstash name: 'repo'
+ wallet.launchElectronContainerBuild('linux')
+ }
+ }
+ finally{
+ sh 'sudo chmod -R 777 ./'
+ stash includes: '**/Waves*.deb', name: item.buildArtifacts + 'linux', allowEmpty: true
+ }
+ }
+ }
+ // electronContainerTasks['windows'] = {
+ // dir('windows'){
+ // try{
+ // docker.image('electronuserland/builder:wine').inside("-u 0"){
+ // unstash name: 'repo'
+ // wallet.launchElectronContainerBuild('win')
+ // }
+ // }
+ // finally{
+ // sh 'sudo chmod -R 777 ./'
+ // stash includes: '**/waves*.exe,**/Waves*.exe', name: 'win', allowEmpty: true, excludes: '**/Waves DEX.exe'
+ // }
+ // }
+ // }
+ parallel electronContainerTasks
+ }
+ }
+ electronGlobalTasks['mac']={
+ node('electron'){
+ step([$class: 'WsCleanup'])
+ electronMacTasks['windowsVagrant'] = {
+ dir('windowsVagrant'){
+ try{
+ wallet.removeElectronBuilderVM()
+ unstash name: 'repo'
+ writeFile file: 'Vagrantfile', text: wallet.wavesElectronVagrantfile()
+ winElectronBuildTasks['windowsVagrant'] = {
+ sh 'vagrant up && pkill -f tail'
+ }
+ winElectronBuildTasks['windowsVagrantLog'] = {
+ sleep 20
+ sh 'touch WavesGUI/electron.log && tail -f WavesGUI/electron.log || true'
+ }
+ parallel winElectronBuildTasks
+ }
+ finally{
+ stash includes: '**/waves*.exe,**/Waves*.exe', name: item.buildArtifacts + 'win', allowEmpty: true, excludes: '**/Waves DEX.exe'
+ wallet.removeElectronBuilderVM()
+ }
+ }
+ }
+ electronMacTasks['mac'] = {
+ dir('mac'){
+ try{
+ unstash name: 'repo'
+ dir('WavesGUI'){
+ withCredentials([usernamePassword(credentialsId: 'appleid-specific-password-for-electron-notarization', usernameVariable: 'appleIdUsername', passwordVariable: 'appleIdPassword')]) {
+ def macNotarizeMap = [appleIdUsername: appleIdUsername, appleIdPassword: appleIdPassword]
+ cookThisTemplate(
+ templateMap: macNotarizeMap,
+ template: './electron/notarize.ts'
+ )
+ }
+ sh "PATH=/usr/local/opt/node@10/bin:${PATH} DEBUG=electron* ./jenkinsBuildElectronScript.sh mac"
+ }
+ }
+ finally{
+ stash includes: '**/Waves*.dmg', name: item.buildArtifacts + 'mac', allowEmpty: true
+ }
+ }
+ }
+ parallel electronMacTasks
+ }
+ }
+ parallel electronGlobalTasks
+ item.buildSuccess = true
+ slackIt(channel: slackChannelBuild, message: "Built electron images. <${env.BUILD_URL}/|`Click me to download!`>")
+ }
+ else{
+ step([$class: 'WsCleanup'])
+ unstash name: 'repo'
+ unstash name: 'docker'
+
+ // configure nginx template
+ def wavesWalletNginxMap = wallet.wavesWalletNginxMap().clone()
+ wavesWalletNginxMap.nginxPlatform = item.platform
+ cookThisTemplate(
+ templateMap: wavesWalletNginxMap,
+ template: './nginx/default.conf'
+ )
+
+ // configure Dockerfile template
+ def wavesWalletDockerfileMap = [jenkinsPlatform: item.platform]
+ cookThisTemplate(
+ templateMap: wavesWalletDockerfileMap,
+ template: './Dockerfile'
+ )
+
+ // configure a page with container_info which
+ // contains all info about Jenkins build and git parameters
+ item.containerInfo = wallet.wavesWalletContainerInfo(gitDescribeTag, item.niceName, item.dockerTag)
+ writeFile file: './info.html', text: item.containerInfo
+
+ // copy all the generated text files
+ item.buildArtifacts = it.key + '-dockerBuildArtifacts'
+ stash includes: 'nginx/default.conf,Dockerfile,info.html', allowEmpty: true, name: item.buildArtifacts
+
+ imageIt(
+ imageName: 'waves/' + item.niceName,
+ dockerTag: item.dockerTag,
+ args: " --build-arg trading_view_token=${wallet.wavesWalletTradingViewToken()}" +
+ " --build-arg platform=${item.platform}" +
+ " --no-cache"
+ )
+ item.buildSuccess = true
+ slackIt(channel: slackChannelBuild, message: "Built image: ${Constants.DOCKER_REGISTRY}/waves/${item.niceName}:${item.dockerTag}")
+ }
}
else{
- org.jenkinsci.plugins.pipeline.modeldefinition.Utils.markStageSkippedForConditional("Building " + serviceName)
+ org.jenkinsci.plugins.pipeline.modeldefinition.Utils.markStageSkippedForConditional("Building " + item.niceName)
}
}
}
}
}
parallel buildTasks
- stage("Building Electron") {
- if (pipeline_tasks['electron']) {
- node('mobile'){
- step([$class: 'WsCleanup'])
- unstash name: "repo"
- withCredentials([string(credentialsId: 'electron-signing-cert-passphrase', variable: 'signingCertPassphrase'), string(credentialsId: 'electron-mac-signing-cert-passphrase', variable: 'signingMacCertPassphrase')]) {
- dir('WavesGUI'){
- pipeline_status["built-electron"] = false
- sh """
- export DEBUG=electron-builder
- npm cache --force clean
- npm ci --unsafe-perm
- node_modules/.bin/gulp build --platform desktop --config ./configs/mainnet.json
- cd ./dist/desktop/mainnet && npm i --unsafe-perm && cd ../../../
- WIN_CSC_LINK=WavesPlatformLTD.pfx \
- WIN_CSC_KEY_PASSWORD=${signingCertPassphrase} \
- CSC_LINK=mac_app.p12 \
- CSC_KEY_PASSWORD=${signingMacCertPassphrase} \
- WAVES_CONFIGURATION=mainnet \
- ./node_modules/.bin/build -mwl -p never \
- --config.directories.app=dist/desktop/mainnet
- """
- stash includes: '**/mainnet/*.deb, **/mainnet/*.dmg, **/mainnet/*.exe', name: 'electron-clients'
- pipeline_status["built-electron"] = true
- ut.notifySlack("docker_builds", currentBuild.result, "Built Electron clients")
+ items.findAll{ it.key !='electron' }.collect{
+ println it
+ def item = it.value
+ item.remoteDestination = destination
+ deployTasks["Deploying " + item.niceName] = {
+ stage("Deploying " + item.niceName) {
+ if (item.deployTask){
+
+ def wavesWalletDeploymentMap = [
+ domainName: item.remoteDestination.replaceAll("\\.","-"),
+ network: network,
+ tag: item.dockerTag,
+ imageName: item.niceName
+ ]
+
+ if (action.contains('PROD')) {
+ item.remoteDestination = wallet.wavesWalletProdDomainNames()[network + '-' + item.niceName]
+ deploymentFile = "./kubernetes/waves-wallet-${network}/deployment.yaml"
+ wavesWalletDeploymentMap.domainName = wallet.wavesWalletProdDomainNames()[network + '-' + item.niceName].replaceAll("\\.","-")
}
- }
- }
-
- ['wallet', 'wallet-electron'].each{ serviceName ->
- org.jenkinsci.plugins.pipeline.modeldefinition.Utils.markStageSkippedForConditional("Building " + serviceName)
- }
- }else{
- org.jenkinsci.plugins.pipeline.modeldefinition.Utils.markStageSkippedForConditional("Building Electron")
- }
- }
- ['wallet', 'wallet-electron'].each{ serviceName ->
- remote_destination[serviceName] = destination
- deployTasks["Deploying " + serviceName] = {
- stage("Deploying " + serviceName) {
- pipeline_status["deployed-${serviceName}"] = false
- if (action.contains('Deploy')) {
- if (image == serviceName || image =="both" ) {
- def waves_wallet_deployment_map = [
- domain_name: remote_destination[serviceName].replaceAll("\\.","-"),
- network: network,
- tag: source,
- image: serviceName,
- current_date: "'${ut.shWithOutput('date +%s')}'"
- ]
-
- if (action.contains('PROD')) {
- remote_destination[serviceName] = Constants.WAVES_WALLET_PROD_DOMAIN_NAMES[network + '-' + serviceName]
- deploymentFile = "./kubernetes/waves-wallet-${network}/deployment.yaml"
- waves_wallet_deployment_map.domain_name = Constants.WAVES_WALLET_PROD_DOMAIN_NAMES[network + '-' + serviceName].replaceAll("\\.","-")
- }
- // configure deployment template
- String deploymentConfFileContent = ut.replaceTemplateVars(deploymentFile, waves_wallet_deployment_map)
- def deployment_config = "./${artifactsDir}/${serviceName}-deployment.yaml"
- writeFile file: "./${artifactsDir}/${serviceName}/${serviceName}-deployment.yaml", text: deploymentConfFileContent
-
- // deploy container to kuber
- withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: Constants.AWS_KUBERNETES_KEY, secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
- sh """
- docker run -i --rm \
- -v "${env.WORKSPACE}/${artifactsDir}/${serviceName}":/root/app \
- -e AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}" \
- -e AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}" \
- -e KUBE_CLUSTER_NAME="${Constants.AWS_KUBERNETES_KUBE_CLUSTER_NAME}" \
- -e AWS_REGION="${Constants.AWS_KUBERNETES_AWS_REGION}" \
- -e CONFIG_PATH="${serviceName}-deployment.yaml" \
- "${Constants.DOCKER_KUBERNETES_EXECUTOR_IMAGE}"
- """
- }
- pipeline_status["deployed-${serviceName}"] = true
- ut.notifySlack("waves-deploy-alerts",
- currentBuild.result,
- "Deployed image:\n${Constants.DOCKER_REGISTRY}/waves/${serviceName}:${source} ${network} to ${remote_destination[serviceName]}")
+ def deploymentFileOutput = kubeIt(
+ deploymentTemplate: deploymentFile,
+ deploymentMap: wavesWalletDeploymentMap
+ )
+ item.deployArtifacts = item.niceName + '-kubeDeployArtifacts'
+ stash includes: 'kubeItOut/**', allowEmpty: true, name: item.deployArtifacts
- } else {
- org.jenkinsci.plugins.pipeline.modeldefinition.Utils.markStageSkippedForConditional("Deploying " + serviceName)
- }
+ item.deploySuccess = true
+ slackIt(channel: slackChannelDeploy, message: "Deployed image:\n${Constants.DOCKER_REGISTRY}/waves/${item.niceName}:${item.dockerTag} ${network} to ${item.remoteDestination}")
}
else {
- org.jenkinsci.plugins.pipeline.modeldefinition.Utils.markStageSkippedForConditional("Deploying " + serviceName)
+ org.jenkinsci.plugins.pipeline.modeldefinition.Utils.markStageSkippedForConditional("Deploying " + item.niceName)
}
}
}
@@ -301,30 +390,42 @@ timeout(time:20, unit:'MINUTES') {
println(err.toString())
}
finally{
- ['wallet', 'wallet-electron'].each{ serviceName ->
- if (pipeline_tasks['build'] && ! pipeline_status["built-${serviceName}"])
- ut.notifySlack("docker_builds",
- currentBuild.result,
- "Failed to build image: ${Constants.DOCKER_REGISTRY}/waves/${serviceName}:${source}")
-
- if (pipeline_tasks['deploy'] && !pipeline_status["deployed-${serviceName}"])
- if (image == serviceName || image =="both" ) {
- ut.notifySlack("waves-deploy-alerts",
- currentBuild.result,
- "Failed to deploy image:\n${Constants.DOCKER_REGISTRY}/waves/${serviceName}:${source} ${network} to ${remote_destination[serviceName]}")
- }
- }
- if (pipeline_tasks['electron']) {
- if (! pipeline_status["built-electron"]){
- ut.notifySlack("docker_builds", currentBuild.result, "Failed to build Electron clients")
- } else{
- dir("${artifactsDir}") {
- unstash "electron-clients"
+ items.each{
+ def item = it.value
+ if (item.buildTask && !item.buildSuccess)
+ if (item.niceName == 'electron')
+ slackIt(channel: slackChannelBuild, buildStatus: currentBuild.result, message: "Failed to build electron images in branch ${source}")
+ else
+ slackIt(channel: slackChannelBuild, buildStatus: currentBuild.result, message: "Failed to build image: ${Constants.DOCKER_REGISTRY}/waves/${item.niceName}:${item.dockerTag}")
+
+ if (item.deployTask && !item.deploySuccess)
+ slackIt(channel: slackChannelBuild, buildStatus: currentBuild.result, message: "Failed to deploy image:\n${Constants.DOCKER_REGISTRY}/waves/${item.niceName}:${item.dockerTag} ${network} to ${item.remoteDestination}")
+
+ dir("out/${item.niceName}"){
+ if(item.buildArtifacts){
+ if (it.key == 'electron'){
+ ['linux','mac','win'].each{ os ->
+ dir(os){
+ unstash name: item.buildArtifacts + os
+ }
+ }
+ // dir("winOnLinux"){
+ // unstash name: 'win'
+ // }
+ } else{
+ unstash name: item.buildArtifacts
+ }
}
+ if(item.deployArtifacts)
+ unstash name: item.deployArtifacts
}
+
+ }
+ dir("out"){
+ def isNotEmpty = ut.shWithOutput('ls')
+ if (isNotEmpty)
+ archiveArtifacts artifacts: "**/**"
}
- sh "tar -czvf artifacts.tar.gz -C ./${artifactsDir} ."
- archiveArtifacts artifacts: 'artifacts.tar.gz'
}
}
}
diff --git a/build-wallet/Dockerfile_template b/build-wallet/Dockerfile
similarity index 81%
rename from build-wallet/Dockerfile_template
rename to build-wallet/Dockerfile
index 3f82de116b..17fd22a7c2 100644
--- a/build-wallet/Dockerfile_template
+++ b/build-wallet/Dockerfile
@@ -1,10 +1,10 @@
-FROM node:lts-alpine as trading-view-${jenkins_platform}
+FROM node:lts-alpine as trading-view-${jenkinsPlatform}
ARG trading_view_token
WORKDIR /root
-RUN echo "//registry.npmjs.org/:_authToken=${trading_view_token}" > /root/.npmrc && \
+RUN echo "//registry.npmjs.org/:_authToken=\$trading_view_token" > /root/.npmrc && \
npm i @waves/trading-view
-FROM node:lts-alpine as static-${jenkins_platform}
+FROM node:lts-alpine as static-${jenkinsPlatform}
RUN apk update && apk add git
COPY ./WavesGUI/ /srv/www/WavesGUI/
@@ -30,8 +30,8 @@ RUN mkdir -p /etc/nginx/sites-enabled && \
apk update && \
apk add gettext libintl
WORKDIR /srv/www
-COPY --from=trading-view-${jenkins_platform} /root/node_modules node_modules
-COPY --from=static-${jenkins_platform} /srv/www .
+COPY --from=trading-view-${jenkinsPlatform} /root/node_modules node_modules
+COPY --from=static-${jenkinsPlatform} /srv/www .
COPY ./nginx/default.conf /etc/nginx/sites-available/default.conf
COPY ./info.html /srv/www/info
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
diff --git a/build-wallet/nginx/default_template.conf b/build-wallet/nginx/default.conf
similarity index 58%
rename from build-wallet/nginx/default_template.conf
rename to build-wallet/nginx/default.conf
index 4b5306e725..643d0dc1e0 100644
--- a/build-wallet/nginx/default_template.conf
+++ b/build-wallet/nginx/default.conf
@@ -19,20 +19,20 @@ server {
server {
listen 80;
- server_name ${nginx_server_name};
+ server_name ${nginxServerName};
index index.html index.htm;
- access_log syslog:server=td-agent-${nginx_access_log_address} nginx_ltsv_access;
- error_log syslog:server=td-agent-${nginx_error_log_address} error;
+ access_log syslog:server=td-agent-${nginxAccessLogAddress} nginx_ltsv_access;
+ error_log syslog:server=td-agent-${nginxErrorLogAddress} error;
rewrite ^/(.*)/\$ /\$1 permanent;
- root /srv/www/WavesGUI/dist/${nginx_platform}/\${WEB_ENVIRONMENT}/;
+ root /srv/www/WavesGUI/dist/${nginxPlatform}/\${WEB_ENVIRONMENT}/;
add_header X-Frame-Options "SAMEORIGIN";
add_header Access-Control-Allow-Origin *;
add_header Referrer-Policy origin always;
add_header X-Content-Type-Options nosniff always;
add_header X-XSS-Protection "1; mode=block" always;
add_header strict-transport-security "max-age=2592000; includeSubDomains" always;
- add_header Content-Security-Policy "default-src * 'unsafe-inline' data: blob: https:; script-src 'self' ${nginx_security_policy_domains} 'unsafe-inline' 'unsafe-eval' blob:; upgrade-insecure-requests; report-uri ${nginx_security_policy_domain}-uri.com/r/d/csp/enforce" always;
+ add_header Content-Security-Policy "default-src * 'unsafe-inline' data: blob: https:; script-src 'self' ${nginxSecurityPolicyDomains} 'unsafe-inline' 'unsafe-eval' blob:; upgrade-insecure-requests; report-uri ${nginxSecurityPolicyDomain}-uri.com/r/d/csp/enforce" always;
location /img/images-list.json {
auth_basic off;
@@ -48,8 +48,12 @@ server {
rewrite /wallet /wallet/assets;
}
- location ~ ^/(sign-up|switch|migrate|sign-in|dex-demo|dex|wallet/transactions|wallet/portfolio|wallet/assets|import/ledger|import/restore|import|restore|export|create|tokens) {
- rewrite /(sign-up|switch|migrate|sign-in|dex-demo|dex|wallet/transactions|wallet/portfolio|wallet/assets|import/ledger|import/restore|import|restore|export|create|tokens) /index.html;
+ location ~ ^/(sign-in|dex-demo|dex|wallet/transactions|wallet/portfolio|wallet/assets|import/ledger|import/restore|import|restore|export|create|tokens) {
+ rewrite /(sign-in|dex-demo|dex|wallet/transactions|wallet/portfolio|wallet/assets|import/ledger|import/restore|import|restore|export|create|tokens) /index.html;
+ }
+
+ location = /keeper.html {
+ add_header X-Frame-Options "";
}
location /trading-view {
diff --git a/electron-builder.yml b/electron-builder.yml
index 0cf0010723..d2071c23c4 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -1,12 +1,11 @@
productName: "Waves DEX"
-appId: "com.wavesplatform.client.lite"
+appId: "com.wavesplatform.client"
copyright: "Waves Platform"
-
+afterSign: "./notarize.js"
compression: normal
npmRebuild: true
artifactName: "${productName}[${env.WAVES_CONFIGURATION}]-${version}-${os}-${arch}.${ext}"
asar: true
-
directories:
buildResources: electron/
output: "release/${env.WAVES_CONFIGURATION}"
@@ -23,8 +22,8 @@ win:
mac:
hardenedRuntime: true
gatekeeperAssess: false
- entitlements: "electron/entitlements.mac.plist"
- entitlementsInherit: "electron/entitlements.mac.plist"
+ entitlements: "electron/dex.wavesplatform.client.entitlements.plist"
+ entitlementsInherit: "electron/dex.wavesplatform.client.entitlements.plist"
category: "public.app-category.finance"
target: dmg
icon: "electron/icons/icon.icns"
@@ -48,7 +47,6 @@ deb:
# --- Default END
nsis:
- artifactName: "waves-client[${env.WAVES_CONFIGURATION}]-setup-${version}.${ext}"
include: "electron/installer.nsh"
installerIcon: "electron/icons/icon.ico"
uninstallerIcon: "electron/icons/icon.ico"
@@ -58,3 +56,4 @@ nsis:
dmg:
icon: "electron/icons/icon.icns"
background: "electron/icons/macos-installer-bg.tiff"
+ sign: false
diff --git a/electron/Bridge.ts b/electron/Bridge.ts
index 5b8c1b9fa3..d873413a76 100644
--- a/electron/Bridge.ts
+++ b/electron/Bridge.ts
@@ -50,13 +50,16 @@ export class Bridge implements IBridge {
const path = app.getPath('downloads');
const options = { defaultPath: join(path, data.fileName) };
- dialog.showSaveDialog(this.main.mainWindow, options, function (filename) {
- if (filename) {
- return write(filename, data.fileContent).then(resolve, reject);
- } else {
- return reject(new Error('Cancel'));
+ return dialog.showSaveDialog(this.main.mainWindow, options).then(
+ function (saveDialogValue) {
+ if (saveDialogValue.filePath) {
+ return write(saveDialogValue.filePath, data.fileContent).then(resolve, reject);
+ } else {
+ return reject(new Error('Cancel'));
+ }
}
- });
+ );
+
});
}
diff --git a/electron/constansts.ts b/electron/constansts.ts
index e45c0a6170..dd6d26c6fc 100644
--- a/electron/constansts.ts
+++ b/electron/constansts.ts
@@ -1,4 +1,4 @@
-import MenuItemConstructorOptions = Electron.MenuItemConstructorOptions;
+import { MenuItemConstructorOptions, MenuItem } from 'electron';
export const META_NAME = 'meta.json';
@@ -51,8 +51,8 @@ export const GET_MENU_LIST = (app, t, hasDevTools) => [
} : null
].filter(Boolean) as MenuItemConstructorOptions[];
-export const CONTEXT_MENU = t => [
- { label: t('menu.cut'), accelerator: 'CmdOrCtrl+X', role: 'cut' },
- { label: t('menu.copy'), accelerator: 'CmdOrCtrl+C', role: 'copy' },
- { label: t('menu.paste'), accelerator: 'CmdOrCtrl+V', role: 'paste' }
+export const CONTEXT_MENU = locale => [
+ new MenuItem({ label: locale('menu.cut'), accelerator: 'CmdOrCtrl+X', role: 'cut' }),
+ new MenuItem({ label: locale('menu.copy'), accelerator: 'CmdOrCtrl+C', role: 'copy' }),
+ new MenuItem({ label: locale('menu.paste'), accelerator: 'CmdOrCtrl+V', role: 'paste' }),
];
diff --git a/electron/dex.wavesplatform.client.entitlements.plist b/electron/dex.wavesplatform.client.entitlements.plist
new file mode 100644
index 0000000000..7c267e8b57
--- /dev/null
+++ b/electron/dex.wavesplatform.client.entitlements.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ com.apple.security.automation.apple-events
+
+ com.apple.security.cs.debugger
+
+ com.apple.security.cs.allow-jit
+
+ com.apple.security.cs.allow-unsigned-executable-memory
+
+ com.apple.security.cs.disable-library-validation
+
+ com.apple.security.cs.disable-executable-page-protection
+
+ com.apple.security.cs.allow-dyld-environment-variables
+
+
+
\ No newline at end of file
diff --git a/electron/entitlements.mac.plist b/electron/entitlements.mac.plist
deleted file mode 100644
index d6b93bc0b2..0000000000
--- a/electron/entitlements.mac.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- com.apple.security.cs.allow-unsigned-executable-memory
-
-
-
diff --git a/electron/main.ts b/electron/main.ts
index c4990ff24d..0f3ef65944 100644
--- a/electron/main.ts
+++ b/electron/main.ts
@@ -89,19 +89,17 @@ class Main implements IMain {
this.addContextMenu();
}
- private makeSingleInstance(): boolean {
- const isOpenClient = app.makeSingleInstance((argv) => {
- const link = argv.find(hasProtocol) || '';
-
- this.openProtocolIn(link);
- });
-
- if (isOpenClient) {
+ private makeSingleInstance() {
+ const gotTheLock = app.requestSingleInstanceLock();
+ const argv = process.argv;
+ const link = argv.find(hasProtocol) || '';
+ this.openProtocolIn(link);
+
+ if (!gotTheLock) {
app.quit();
}
-
- return !isOpenClient;
- }
+ return gotTheLock;
+ }
private openProtocolIn(browserLink) {
if (!browserLink || !hasProtocol(browserLink)) {
@@ -211,10 +209,14 @@ class Main implements IMain {
}
private createCtxMenu(locale) {
- const onContextMenu = (menu: Menu): () => void => () => menu.popup({});
+ const onContextMenu = (menu: Menu) => () => {
+ menu.popup({});
+ };
+
if (this.ctxMenuList.length > 0) {
this.mainWindow.webContents.removeAllListeners('context-menu');
}
+
const ctxMenuTemplate = CONTEXT_MENU(locale);
const ctxMenu = Menu.buildFromTemplate(ctxMenuTemplate);
this.ctxMenuList.push(ctxMenu);
diff --git a/electron/notarize.ts b/electron/notarize.ts
new file mode 100644
index 0000000000..474203bb3d
--- /dev/null
+++ b/electron/notarize.ts
@@ -0,0 +1,45 @@
+const notarize = require ('electron-notarize').notarize;
+const fs = require('fs');
+const util = require('util');
+const exec = util.promisify(require('child_process').exec);
+const access = fs.createWriteStream('./out.log');
+process.stdout.write = process.stderr.write = access.write.bind(access);
+
+process.on('uncaughtException', function(err) {
+ console.error((err && err.stack) ? err.stack : err);
+});
+
+async function notarizeAppInfo() {
+ const { stdout, stderr } = await exec("\
+ { sleep 30 && xcrun altool --notarization-history 0 -u '${appleIdUsername}' -p '${appleIdPassword}' || true ;} && \
+ { xcrun altool --notarization-info \$(cat out.log | grep 'checking notarization status' | cut -d':' -f2 | cut -d' ' -f2 | \
+ tail -1) -u '${appleIdUsername}' -p '${appleIdPassword}' || true ;} && \
+ { xcrun stapler staple -v './release/mainnet/mac/Waves DEX.app' || true ;}");
+ console.log(`\${stdout}`);
+ if (stderr) {
+ console.error("error: \${stderr}");
+ }
+}
+
+async function notarizeApp () {
+ try {
+ await notarize({
+ appBundleId: 'com.wavesplatform.client',
+ appPath: 'release/mainnet/mac/Waves DEX.app',
+ appleId: '${appleIdUsername}',
+ appleIdPassword: '${appleIdPassword}'
+ });
+ }
+ catch(err){
+ console.log(err);
+ return true;
+ }
+}
+
+module.exports = async function sequence(context) {
+ const {electronPlatformName} = context;
+ if (electronPlatformName === 'darwin') {
+ await notarizeApp();
+ await notarizeAppInfo();
+ }
+};
diff --git a/package-lock.json b/package-lock.json
index 7560bd56f7..61f53aae77 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,9 +5,9 @@
"requires": true,
"dependencies": {
"7zip-bin": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-4.1.0.tgz",
- "integrity": "sha512-AsnBZN3a8/JcNt+KPkGGODaA4c7l3W5+WpeKgGSbstSLxqWtTXqd1ieJGBQ8IFCtRg8DmmKUcSkIkUc0A4p3YA==",
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.0.3.tgz",
+ "integrity": "sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA==",
"dev": true
},
"@babel/code-frame": {
@@ -167,6 +167,16 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@develar/schema-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.1.0.tgz",
+ "integrity": "sha512-qjCqB4ctMig9Gz5bd6lkdFr3bO6arOdQqptdBSpF1ZpCnjofieCciEzkoS9ujY9cMGyllYSCSmBJ3x9OKHXzoA==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
"@ledgerhq/devices": {
"version": "4.70.0",
"resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-4.70.0.tgz",
@@ -390,9 +400,9 @@
"dev": true
},
"@types/debug": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.4.tgz",
- "integrity": "sha512-D9MyoQFI7iP5VdpEyPZyjjqIJ8Y8EDNQFIFVLOmeg1rI1xiHOChyUPMPRUVfqFCerxfE+yS3vMyj37F6IdtOoQ==",
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz",
+ "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==",
"dev": true
},
"@types/events": {
@@ -1127,9 +1137,9 @@
}
},
"ajv-keywords": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz",
- "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
+ "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
"dev": true
},
"align-text": {
@@ -1302,41 +1312,39 @@
}
},
"app-builder-bin": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.6.6.tgz",
- "integrity": "sha512-G0Ee6xkbxV+fvM/7xXWIgSDjWAD4E/d/aNbxerq/TVsCyBIau/0VPmrEqBMyZv0NbTwLDW5aF/yHG+0ZEY77kA==",
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.3.tgz",
+ "integrity": "sha512-qMhayIwi3juerQEVJMQ76trObEbfQT0nhUdxZz9a26/3NLT3pE6awmQ8S1cEnrGugaaM5gYqR8OElcDezfmEsg==",
"dev": true
},
"app-builder-lib": {
- "version": "20.43.0",
- "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.43.0.tgz",
- "integrity": "sha512-8OhRPGbTFsgBn07mcG1x0FApqsLLQkNMrdl2sBPo/haI/E1QqhN4DU5x7nKbbFwnsG2XvqvBBZwnMV3FXgDi9Q==",
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-21.2.0.tgz",
+ "integrity": "sha512-aOX/nv77/Bti6NymJDg7p9T067xD8m1ipIEJR7B4Mm1GsJWpMm9PZdXtCRiMNRjHtQS5KIljT0g17781y6qn5A==",
"dev": true,
"requires": {
- "7zip-bin": "~4.1.0",
- "app-builder-bin": "2.6.6",
+ "7zip-bin": "~5.0.3",
+ "@develar/schema-utils": "~2.1.0",
"async-exit-hook": "^2.0.1",
"bluebird-lst": "^1.0.9",
- "builder-util": "10.0.2",
- "builder-util-runtime": "8.2.4",
+ "builder-util": "21.2.0",
+ "builder-util-runtime": "8.3.0",
"chromium-pickle-js": "^0.2.0",
"debug": "^4.1.1",
- "ejs": "^2.6.1",
- "electron-osx-sign": "0.4.11",
- "electron-publish": "20.43.0",
- "fs-extra-p": "^8.0.2",
+ "ejs": "^2.6.2",
+ "electron-publish": "21.2.0",
+ "fs-extra": "^8.1.0",
"hosted-git-info": "^2.7.1",
"is-ci": "^2.0.0",
- "isbinaryfile": "^4.0.0",
+ "isbinaryfile": "^4.0.2",
"js-yaml": "^3.13.1",
"lazy-val": "^1.0.4",
"minimatch": "^3.0.4",
"normalize-package-data": "^2.5.0",
- "plist": "^3.0.1",
- "read-config-file": "3.2.2",
- "sanitize-filename": "^1.6.1",
- "semver": "^6.1.1",
- "temp-file": "^3.3.2"
+ "read-config-file": "5.0.0",
+ "sanitize-filename": "^1.6.2",
+ "semver": "^6.3.0",
+ "temp-file": "^3.3.4"
},
"dependencies": {
"debug": {
@@ -1348,62 +1356,42 @@
"ms": "^2.1.1"
}
},
- "electron-osx-sign": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz",
- "integrity": "sha512-VVd40nrnVqymvFrY9ZkOYgHJOvexHHYTR3di/SN+mjJ0OWhR1I8BRVj3U+Yamw6hnkZZNKZp52rqL5EFAAPFkQ==",
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
"requires": {
- "bluebird": "^3.5.0",
- "compare-version": "^0.1.2",
- "debug": "^2.6.8",
- "isbinaryfile": "^3.0.2",
- "minimist": "^1.2.0",
- "plist": "^3.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "isbinaryfile": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
- "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
- "dev": true,
- "requires": {
- "buffer-alloc": "^1.2.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
}
},
- "isbinaryfile": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.1.tgz",
- "integrity": "sha512-bvJxbNWm72dy/1+qeBm9F8wUM4siDnlzid7NN5Ib4nQcc0tNIx/YWgEih1ZRHXr8xVbpGk1ccLlA9gOSlyx3gw==",
+ "graceful-fs": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+ "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
"dev": true
},
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "isbinaryfile": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.2.tgz",
+ "integrity": "sha512-C3FSxJdNrEr2F4z6uFtNzECDM5hXk+46fxaa+cwBe5/XrWSmzdG8DDgyjfX6/NRdBB21q2JXuRAzPCUs+fclnQ==",
"dev": true
},
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
"ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"normalize-package-data": {
@@ -1419,43 +1407,35 @@
},
"dependencies": {
"semver": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
- "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
}
}
},
- "plist": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
- "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
+ "resolve": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
"dev": true,
"requires": {
- "base64-js": "^1.2.3",
- "xmlbuilder": "^9.0.7",
- "xmldom": "0.1.x"
+ "path-parse": "^1.0.6"
}
},
- "resolve": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
- "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
+ "sanitize-filename": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
+ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
"dev": true,
"requires": {
- "path-parse": "^1.0.6"
+ "truncate-utf8-bytes": "^1.0.0"
}
},
"semver": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
- "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==",
- "dev": true
- },
- "xmlbuilder": {
- "version": "9.0.7",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
- "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
}
}
@@ -2974,9 +2954,9 @@
},
"dependencies": {
"bluebird": {
- "version": "3.5.5",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
- "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz",
+ "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==",
"dev": true
}
}
@@ -3470,24 +3450,24 @@
"dev": true
},
"builder-util": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-10.0.2.tgz",
- "integrity": "sha512-Dt11O/MTdCsaCjAdnkVVcDSSkQEkvPWAs18sNQBc6l6wt5RvzcI4nfgpLxwbUi/DkCpHCltUgIj94TLQXQv1bw==",
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-21.2.0.tgz",
+ "integrity": "sha512-Nd6CUb6YgDY8EXAXEIegx+1kzKqyFQ5ZM5BoYkeunAlwz/zDJoH1UCyULjoS5wQe5czNClFQy07zz2bzYD0Z4A==",
"dev": true,
"requires": {
- "7zip-bin": "~4.1.0",
+ "7zip-bin": "~5.0.3",
"@types/debug": "^4.1.4",
- "app-builder-bin": "2.6.6",
+ "app-builder-bin": "3.4.3",
"bluebird-lst": "^1.0.9",
- "builder-util-runtime": "^8.2.4",
+ "builder-util-runtime": "8.3.0",
"chalk": "^2.4.2",
"debug": "^4.1.1",
- "fs-extra-p": "^8.0.2",
+ "fs-extra": "^8.1.0",
"is-ci": "^2.0.0",
"js-yaml": "^3.13.1",
- "source-map-support": "^0.5.12",
+ "source-map-support": "^0.5.13",
"stat-mode": "^0.3.0",
- "temp-file": "^3.3.2"
+ "temp-file": "^3.3.4"
},
"dependencies": {
"chalk": {
@@ -3510,23 +3490,57 @@
"ms": "^2.1.1"
}
},
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+ "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
"ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
+ },
+ "source-map-support": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
}
}
},
"builder-util-runtime": {
- "version": "8.2.4",
- "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.2.4.tgz",
- "integrity": "sha512-iwRnmFnGs63+p6uJem2N/d9Q0SKj5c0TP8PTesKnWsWvo1saKKM/0yiT137w+3uz+r/Cmf8VH/8nt75uW8jeUw==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.3.0.tgz",
+ "integrity": "sha512-CSOdsYqf4RXIHh1HANPbrZHlZ9JQJXSuDDloblZPcWQVN62inyYoTQuSmY3KrgefME2Sv3Kn2MxHvbGQHRf8Iw==",
"dev": true,
"requires": {
- "bluebird-lst": "^1.0.9",
"debug": "^4.1.1",
- "fs-extra-p": "^8.0.2",
"sax": "^1.2.4"
},
"dependencies": {
@@ -3540,9 +3554,9 @@
}
},
"ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
@@ -3577,38 +3591,41 @@
}
},
"cacheable-request": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz",
- "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+ "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
"dev": true,
"requires": {
"clone-response": "^1.0.2",
- "get-stream": "^4.0.0",
+ "get-stream": "^5.1.0",
"http-cache-semantics": "^4.0.0",
"keyv": "^3.0.0",
- "lowercase-keys": "^1.0.1",
- "normalize-url": "^3.1.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^4.1.0",
"responselike": "^1.0.2"
},
"dependencies": {
- "end-of-stream": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
- "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
- "dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
"get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
+ "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
"dev": true,
"requires": {
"pump": "^3.0.0"
}
},
+ "lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true
+ },
+ "normalize-url": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
+ "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
+ "dev": true
+ },
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -5234,19 +5251,64 @@
}
},
"dmg-builder": {
- "version": "6.6.4",
- "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.6.4.tgz",
- "integrity": "sha512-neJXwnFaJ4wisP++Yyi9H0kEUsvxyY7TBBEK2fu8V8i1VoMQKljY/6Dgf2HktLVHzXSWP71TQwKKWSIWI/3aeQ==",
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-21.2.0.tgz",
+ "integrity": "sha512-9cJEclnGy7EyKFCoHDYDf54pub/t92CQapyiUxU0w9Bj2vUvfoDagP1PMiX4XD5rPp96141h9A+QN0OB4VgvQg==",
"dev": true,
"requires": {
- "app-builder-lib": "~20.43.0",
+ "app-builder-lib": "~21.2.0",
"bluebird-lst": "^1.0.9",
- "builder-util": "~10.0.2",
- "fs-extra-p": "^8.0.2",
- "iconv-lite": "^0.4.24",
+ "builder-util": "~21.2.0",
+ "fs-extra": "^8.1.0",
+ "iconv-lite": "^0.5.0",
"js-yaml": "^3.13.1",
- "parse-color": "^1.0.0",
- "sanitize-filename": "^1.6.1"
+ "sanitize-filename": "^1.6.2"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+ "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.0.tgz",
+ "integrity": "sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "sanitize-filename": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
+ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
+ "dev": true,
+ "requires": {
+ "truncate-utf8-bytes": "^1.0.0"
+ }
+ }
}
},
"doctrine": {
@@ -5300,15 +5362,15 @@
}
},
"dotenv": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz",
- "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
+ "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
"dev": true
},
"dotenv-expand": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz",
- "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
+ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
"dev": true
},
"duplexer": {
@@ -5444,41 +5506,49 @@
"dev": true
},
"ejs": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz",
- "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.1.tgz",
+ "integrity": "sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ==",
"dev": true
},
"electron": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/electron/-/electron-2.0.13.tgz",
- "integrity": "sha512-8ouYaLsp0F4sPI7QKgJkkJhrwj1JPSnBwbz6HHA9l6u7WofEt94lV+gHw71KJrDl7UaIkFwlSjyhIjG8lIZqxw==",
+ "version": "6.0.12",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-6.0.12.tgz",
+ "integrity": "sha512-70ODZa1RP6K0gE9IV9YLCXPSyhLjXksCuYSSPb3MljbfwfHo5uE6X0CGxzm+54YuPdE2e7EPnWZxOOsJYrS5iQ==",
"dev": true,
"requires": {
- "@types/node": "^8.0.24",
- "electron-download": "^3.0.1",
+ "@types/node": "^10.12.18",
+ "electron-download": "^4.1.0",
"extract-zip": "^1.0.3"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "10.14.22",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.22.tgz",
+ "integrity": "sha512-9taxKC944BqoTVjE+UT3pQH0nHZlTvITwfsOZqyc+R3sfJuxaTtxWjfn1K2UlxyPcKHf0rnaXcVFrS9F9vf0bw==",
+ "dev": true
+ }
}
},
"electron-builder": {
- "version": "20.43.0",
- "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.43.0.tgz",
- "integrity": "sha512-8trMnW3K2BWtPGQJqCWZ5QMwZajMucmzlTCHrzhufQWuQbaPhanmho6tWFm2ftyuYku3T4TB4kD7UCX/YQDGyg==",
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-21.2.0.tgz",
+ "integrity": "sha512-x8EXrqFbAb2L3N22YlGar3dGh8vwptbB3ovo3OF6K7NTpcsmM2zEoJv7GhFyX73rNzSG2HaWpXwGAtOp2JWiEw==",
"dev": true,
"requires": {
- "app-builder-lib": "20.43.0",
+ "app-builder-lib": "21.2.0",
"bluebird-lst": "^1.0.9",
- "builder-util": "10.0.2",
- "builder-util-runtime": "8.2.4",
+ "builder-util": "21.2.0",
+ "builder-util-runtime": "8.3.0",
"chalk": "^2.4.2",
- "dmg-builder": "6.6.4",
- "fs-extra-p": "^8.0.2",
+ "dmg-builder": "21.2.0",
+ "fs-extra": "^8.1.0",
"is-ci": "^2.0.0",
"lazy-val": "^1.0.4",
- "read-config-file": "3.2.2",
- "sanitize-filename": "^1.6.1",
- "update-notifier": "^3.0.0",
- "yargs": "^13.2.4"
+ "read-config-file": "5.0.0",
+ "sanitize-filename": "^1.6.2",
+ "update-notifier": "^3.0.1",
+ "yargs": "^13.3.0"
},
"dependencies": {
"ansi-regex": {
@@ -5487,12 +5557,6 @@
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -5515,43 +5579,6 @@
"wrap-ansi": "^5.1.0"
}
},
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "end-of-stream": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
- "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
- "dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "dev": true,
- "requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
@@ -5561,25 +5588,27 @@
"locate-path": "^3.0.0"
}
},
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "invert-kv": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
- "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "graceful-fs": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+ "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
"dev": true
},
"is-fullwidth-code-point": {
@@ -5588,13 +5617,13 @@
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
- "lcid": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
- "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"dev": true,
"requires": {
- "invert-kv": "^2.0.0"
+ "graceful-fs": "^4.1.6"
}
},
"locate-path": {
@@ -5607,38 +5636,10 @@
"path-exists": "^3.0.0"
}
},
- "mem": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
- "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
- "dev": true,
- "requires": {
- "map-age-cleaner": "^0.1.1",
- "mimic-fn": "^2.0.0",
- "p-is-promise": "^2.0.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "os-locale": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
- "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
- "dev": true,
- "requires": {
- "execa": "^1.0.0",
- "lcid": "^2.0.0",
- "mem": "^4.0.0"
- }
- },
"p-limit": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
- "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+ "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
"dev": true,
"requires": {
"p-try": "^2.0.0"
@@ -5659,22 +5660,21 @@
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
+ "sanitize-filename": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
+ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
+ "dev": true,
+ "requires": {
+ "truncate-utf8-bytes": "^1.0.0"
+ }
+ },
"string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -5713,64 +5713,49 @@
"dev": true
},
"yargs": {
- "version": "13.2.4",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
- "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
+ "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
"dev": true,
"requires": {
"cliui": "^5.0.0",
"find-up": "^3.0.0",
"get-caller-file": "^2.0.1",
- "os-locale": "^3.1.0",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^3.0.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
- "yargs-parser": "^13.1.0"
- }
- },
- "yargs-parser": {
- "version": "13.1.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz",
- "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
+ "yargs-parser": "^13.1.1"
}
}
}
},
"electron-download": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-3.3.0.tgz",
- "integrity": "sha1-LP1U1pZsAZxNSa1l++Zcyc3vaMg=",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz",
+ "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==",
"dev": true,
"requires": {
- "debug": "^2.2.0",
- "fs-extra": "^0.30.0",
- "home-path": "^1.0.1",
+ "debug": "^3.0.0",
+ "env-paths": "^1.0.0",
+ "fs-extra": "^4.0.1",
"minimist": "^1.2.0",
- "nugget": "^2.0.0",
- "path-exists": "^2.1.0",
- "rc": "^1.1.2",
- "semver": "^5.3.0",
- "sumchecker": "^1.2.0"
+ "nugget": "^2.0.1",
+ "path-exists": "^3.0.0",
+ "rc": "^1.2.1",
+ "semver": "^5.4.1",
+ "sumchecker": "^2.0.2"
},
"dependencies": {
- "fs-extra": {
- "version": "0.30.0",
- "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
- "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^2.1.0",
- "klaw": "^1.0.0",
- "path-is-absolute": "^1.0.0",
- "rimraf": "^2.2.8"
+ "ms": "^2.1.1"
}
},
"minimist": {
@@ -5779,14 +5764,11 @@
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
}
}
},
@@ -5952,18 +5934,18 @@
}
},
"electron-publish": {
- "version": "20.43.0",
- "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.43.0.tgz",
- "integrity": "sha512-+oaTdbMmh1xceKPZWORYyGkNmxIhu7rkE1qEEn0NeG3KHEAePHg9FZGemR4aV3tQmtOwti2Vj+x8snAUxsnHHQ==",
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.2.0.tgz",
+ "integrity": "sha512-mWavuoWJe87iaeKd0I24dNWIaR+0yRzshjNVqGyK019H766fsPWl3caQJnVKFaEyrZRP397v4JZVG0e7s16AxA==",
"dev": true,
"requires": {
"bluebird-lst": "^1.0.9",
- "builder-util": "~10.0.2",
- "builder-util-runtime": "^8.2.4",
+ "builder-util": "~21.2.0",
+ "builder-util-runtime": "8.3.0",
"chalk": "^2.4.2",
- "fs-extra-p": "^8.0.2",
+ "fs-extra": "^8.1.0",
"lazy-val": "^1.0.4",
- "mime": "^2.4.3"
+ "mime": "^2.4.4"
},
"dependencies": {
"chalk": {
@@ -5977,10 +5959,36 @@
"supports-color": "^5.3.0"
}
},
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+ "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
"mime": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz",
- "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==",
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+ "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
"dev": true
}
}
@@ -6117,12 +6125,6 @@
"es6-symbol": "^3.1.1"
}
},
- "es6-promise": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
- "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
- "dev": true
- },
"es6-symbol": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
@@ -6905,38 +6907,6 @@
}
}
},
- "fs-extra-p": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-8.0.2.tgz",
- "integrity": "sha512-dpWboLA/OlyuqGQdsTjC2PKNkise3O4ptcMpXoyfeM/VXrthkEape3I+drWLI0JAW46r1D3eb6QBSPkSyXPXzA==",
- "dev": true,
- "requires": {
- "bluebird-lst": "^1.0.9",
- "fs-extra": "^8.0.1"
- },
- "dependencies": {
- "fs-extra": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.0.1.tgz",
- "integrity": "sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- }
- }
- },
"fs-mkdirp-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
@@ -7877,15 +7847,6 @@
"url-parse-lax": "^3.0.0"
},
"dependencies": {
- "end-of-stream": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
- "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
- "dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
"get-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
@@ -9461,12 +9422,6 @@
"os-tmpdir": "^1.0.1"
}
},
- "home-path": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.6.tgz",
- "integrity": "sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw==",
- "dev": true
- },
"homedir-polyfill": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
@@ -12542,15 +12497,23 @@
"dev": true
},
"package-json": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.3.0.tgz",
- "integrity": "sha512-XO7WS3EEXd48vmW633Y97Mh9xuENFiOevI9G+ExfTG/k6xuY9cBd3fxkAoDMSEsNZXasaVJIJ1rD/n7GMf18bA==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
+ "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
"dev": true,
"requires": {
"got": "^9.6.0",
- "registry-auth-token": "^3.4.0",
+ "registry-auth-token": "^4.0.0",
"registry-url": "^5.0.0",
- "semver": "^5.6.0"
+ "semver": "^6.2.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
}
},
"pako": {
@@ -12604,23 +12567,6 @@
"author-regex": "^1.0.0"
}
},
- "parse-color": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz",
- "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=",
- "dev": true,
- "requires": {
- "color-convert": "~0.5.0"
- },
- "dependencies": {
- "color-convert": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
- "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=",
- "dev": true
- }
- }
- },
"parse-filepath": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
@@ -15257,59 +15203,40 @@
}
},
"read-config-file": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.2.tgz",
- "integrity": "sha512-PuFpMgZF01VB0ydH1dfitAxCP/fh+qnfbA9cYNIPoxPbz0SMngsrafCtaHDWfER7MwlDz4fmrNBhPkakxxFpTg==",
- "dev": true,
- "requires": {
- "ajv": "^6.9.2",
- "ajv-keywords": "^3.4.0",
- "bluebird-lst": "^1.0.7",
- "dotenv": "^6.2.0",
- "dotenv-expand": "^4.2.0",
- "fs-extra-p": "^7.0.1",
- "js-yaml": "^3.12.1",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-5.0.0.tgz",
+ "integrity": "sha512-jIKUu+C84bfnKxyJ5j30CxCqgXWYjZLXuVE/NYlMEpeni+dhESgAeZOZd0JZbg1xTkMmnCdxksDoarkOyfEsOg==",
+ "dev": true,
+ "requires": {
+ "dotenv": "^8.0.0",
+ "dotenv-expand": "^5.1.0",
+ "fs-extra": "^8.1.0",
+ "js-yaml": "^3.13.1",
"json5": "^2.1.0",
"lazy-val": "^1.0.4"
},
"dependencies": {
- "ajv": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
- "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
"fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
+ "graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
},
- "fs-extra-p": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.1.tgz",
- "integrity": "sha512-yhd2OV0HnHt2oitlp+X9hl2ReX4X/7kQeL7/72qzPHTZj5eUPGzAKOvEglU02Fa1OeG2rSy/aKB4WGVaLiF8tw==",
- "dev": true,
- "requires": {
- "bluebird-lst": "^1.0.7",
- "fs-extra": "^7.0.1"
- }
+ "graceful-fs": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+ "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
+ "dev": true
},
"json5": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
- "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
+ "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
"dev": true,
"requires": {
"minimist": "^1.2.0"
@@ -15567,12 +15494,12 @@
}
},
"registry-auth-token": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
- "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz",
+ "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==",
"dev": true,
"requires": {
- "rc": "^1.1.6",
+ "rc": "^1.2.8",
"safe-buffer": "^5.0.1"
}
},
@@ -16898,13 +16825,12 @@
}
},
"sumchecker": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz",
- "integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
+ "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=",
"dev": true,
"requires": {
- "debug": "^2.2.0",
- "es6-promise": "^4.0.5"
+ "debug": "^2.2.0"
}
},
"supports-color": {
@@ -17010,36 +16936,31 @@
}
},
"temp-file": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.2.tgz",
- "integrity": "sha512-FGKccAW0Mux9hC/2bdUIe4bJRv4OyVo4RpVcuplFird1V/YoplIFbnPZjfzbJSf/qNvRZIRB9/4n/RkI0GziuQ==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.4.tgz",
+ "integrity": "sha512-qSZ5W5q54iyGnP8cNl49RE0jTJc5CrzNocux5APD5yIxcgonoMuMSbsZfaZy8rTGCYo0Xz6ySVv3adagZ8gffg==",
"dev": true,
"requires": {
"async-exit-hook": "^2.0.1",
- "bluebird-lst": "^1.0.6",
- "fs-extra-p": "^7.0.0"
+ "fs-extra": "^8.1.0"
},
"dependencies": {
"fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
+ "graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
},
- "fs-extra-p": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.1.tgz",
- "integrity": "sha512-yhd2OV0HnHt2oitlp+X9hl2ReX4X/7kQeL7/72qzPHTZj5eUPGzAKOvEglU02Fa1OeG2rSy/aKB4WGVaLiF8tw==",
- "dev": true,
- "requires": {
- "bluebird-lst": "^1.0.7",
- "fs-extra": "^7.0.1"
- }
+ "graceful-fs": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+ "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
+ "dev": true
},
"jsonfile": {
"version": "4.0.0",
@@ -17715,9 +17636,9 @@
"dev": true
},
"update-notifier": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.0.tgz",
- "integrity": "sha512-6Xe3oF2bvuoj4YECUc52yxVs94yWrxwqHbzyveDktTS1WhnlTRpNcQMxUshcB7nRVGi1jEXiqL5cW1S5WSyzKg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz",
+ "integrity": "sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ==",
"dev": true,
"requires": {
"boxen": "^3.0.0",
diff --git a/package.json b/package.json
index a49a487139..8856b2284e 100644
--- a/package.json
+++ b/package.json
@@ -50,8 +50,8 @@
"browserify": "16.2.2",
"cookie": "0.4.0",
"cssnano": "4.1.10",
- "electron": "2.0.13",
- "electron-builder": "^20.43.0",
+ "electron": "^6.0.12",
+ "electron-builder": "^21.2.0",
"electron-packager": "12.1.0",
"eslint": "4.18.2",
"fs-extra": "4.0.2",
diff --git a/ts-scripts/meta.json b/ts-scripts/meta.json
index 051fb46610..7fd5acff64 100644
--- a/ts-scripts/meta.json
+++ b/ts-scripts/meta.json
@@ -186,24 +186,27 @@
"license"
],
"defaults": {
+ "homepage": "https://wavesplatform.com",
"main": "main.js",
"devDependencies": {
- "electron-builder": "20.5.1",
- "electron": "2.0.5",
- "electron-rebuild": "^1.8.2"
- },
+ "electron": "^6.0.12",
+ "electron-builder": "^21.2.0",
+ "electron-osx-sign": "^0.4.14",
+ "electron-notarize": "^0.1.1",
+ "electron-rebuild": "^1.8.6"
+ },
"dependencies": {
"@ledgerhq/hw-transport-node-hid": "4.22.0",
+ "@waves/parse-json-bignumber": "1.0.1",
"babel-runtime": "^6.26.0",
"i18next": "9.1.0",
- "@waves/parse-json-bignumber": "1.0.1",
"qrcode-reader": "1.0.3",
"ts-utils": "6.0.2"
- },
+ },
"scripts": {
"postinstall": "node_modules/.bin/electron-rebuild --force"
}
},
"server": "desktop.wavesplatform.com"
}
-}
+}
\ No newline at end of file