From 8d01909a035974234ff3c9489d038feb6eaf2775 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 31 May 2024 11:45:25 +1000 Subject: [PATCH 01/24] Bump version to 2.22.0-beta2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0e046f2cf..4a597074d 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "email": "support@simplenote.com" }, "productName": "Simplenote", - "version": "2.22.0-beta1", + "version": "2.22.0-beta2", "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", From 5fd0209ffc3d0f654a42ca7122b92284dc75baf5 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 31 May 2024 13:03:44 +1000 Subject: [PATCH 02/24] Require `@electron/notarize` instead of old `electron-notarize` Also updates the call to comply with the new API. --- after_sign_hook.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/after_sign_hook.js b/after_sign_hook.js index 0df03ea61..8303db243 100644 --- a/after_sign_hook.js +++ b/after_sign_hook.js @@ -29,13 +29,13 @@ module.exports = async function (params) { console.log(`Notarizing ${appId} found at ${appPath}`); // eslint-disable-line no-console try { - const electron_notarize = require('electron-notarize'); + const electron_notarize = require('@electron/notarize'); await electron_notarize.notarize({ - appBundleId: appId, appPath: appPath, + // TODO: Move to using API key appleId: process.env.NOTARIZATION_ID, appleIdPassword: process.env.NOTARIZATION_PWD, - ascProvider: 'AutomatticInc', + teamId: '99KV9Z6BKV', }); } catch (error) { console.error(error); // eslint-disable-line no-console From f476598b3bf97d7db1e1431a35cff5cc00f713ec Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 31 May 2024 13:04:49 +1000 Subject: [PATCH 03/24] npm install with --legacy-peer-deps, notarize even when not on a tag --- .circleci/config.yml | 6 +++--- Makefile | 4 ++-- after_sign_hook.js | 5 ----- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c76bee6cd..a59b886cb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -54,7 +54,7 @@ references: command: | source $HOME/.nvm/nvm.sh nvm use - npm install --force + npm install --legacy-peer-deps npm_restore_cache: &npm_restore_cache restore_cache: name: Restore npm cache @@ -200,7 +200,7 @@ jobs: - run: name: Npm install command: | - npm install --force + npm install --legacy-peer-deps - run: name: Build windows command: | @@ -244,7 +244,7 @@ jobs: - run: name: Npm install command: | - npm install --force + npm install --legacy-peer-deps - run: name: Build windows command: | diff --git a/Makefile b/Makefile index f7cea4c44..6b8137d02 100644 --- a/Makefile +++ b/Makefile @@ -140,11 +140,11 @@ package-linux: build-if-changed install: node_modules node_modules/%: - @npm install $(notdir $@) + @npm install $(notdir $@) --legacy-peer-deps node_modules: package.json @npm prune - @npm install + @npm install --legacy-peer-deps @touch node_modules diff --git a/after_sign_hook.js b/after_sign_hook.js index 8303db243..46b6fc323 100644 --- a/after_sign_hook.js +++ b/after_sign_hook.js @@ -7,11 +7,6 @@ module.exports = async function (params) { return; } - if (!process.env.CIRCLE_TAG || process.env.CIRCLE_TAG.length === 0) { - console.log('Not on a tag. Skipping notarization'); // eslint-disable-line no-console - return; - } - // Same appId in electron-builder. let appId = 'com.automattic.simplenote'; From 54359374f2c43c9feb747edcb8a5ec70b3006609 Mon Sep 17 00:00:00 2001 From: Kat Hagan Date: Thu, 30 May 2024 23:37:10 -0400 Subject: [PATCH 04/24] try also adding buffer module --- webpack.config.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/webpack.config.js b/webpack.config.js index 95222ab12..56374c96d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -83,7 +83,14 @@ module.exports = () => { }, plugins: [ new NodePolyfillPlugin({ - includeAliases: ['Buffer', 'path', 'process', 'stream', 'util'], + includeAliases: [ + 'Buffer', + 'buffer', + 'path', + 'process', + 'stream', + 'util', + ], }), new HtmlWebpackPlugin({ 'build-platform': process.platform, From 977685a2b8fa2eaca03c5f981468e49a9ea4acdc Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 31 May 2024 14:30:44 +1000 Subject: [PATCH 05/24] Bump version to 2.22.0-beta3 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f7242d4c6..c17bf9dea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simplenote", - "version": "2.22.0-beta1", + "version": "2.22.0-beta3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simplenote", - "version": "2.22.0-beta1", + "version": "2.22.0-beta3", "license": "GPL-2.0", "dependencies": { "@automattic/color-studio": "2.6.0", diff --git a/package.json b/package.json index 4a597074d..9f7b643c9 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "email": "support@simplenote.com" }, "productName": "Simplenote", - "version": "2.22.0-beta2", + "version": "2.22.0-beta3", "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", From f4f96b179024b140e055fdfcb4b07ca7b08b203c Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Wed, 19 Jun 2024 10:30:20 +1000 Subject: [PATCH 06/24] Move from CircleCI to Buildkite (includes various beta bumps) (#3204) Co-authored-by: Kat Hagan Co-authored-by: Olivier Halligon --- .../commands/install_node_dependencies.sh | 6 + .buildkite/commands/package_windows.ps1 | 53 +++ .buildkite/pipeline.yml | 106 ++++++ .buildkite/shared-pipeline-vars | 13 + .bundle/config | 4 + .circleci/config.yml | 300 ----------------- .configure | 15 + .../app_store_connect_fastlane_api_key.p8.enc | Bin 0 -> 272 bytes .editorconfig | 4 + .gitignore | 3 + .rubocop.yml | 29 ++ .ruby-version | 1 + .xcode-version | 1 + Gemfile | 16 + Gemfile.lock | 304 ++++++++++++++++++ Makefile | 77 ++++- after_sign_hook.js | 55 +++- fastlane/.gitignore | 2 + fastlane/Fastfile | 65 ++++ fastlane/example.env | 9 + fastlane/lib/helpers.rb | 48 +++ package-lock.json | 12 +- package.json | 3 +- 23 files changed, 798 insertions(+), 328 deletions(-) create mode 100755 .buildkite/commands/install_node_dependencies.sh create mode 100644 .buildkite/commands/package_windows.ps1 create mode 100644 .buildkite/pipeline.yml create mode 100755 .buildkite/shared-pipeline-vars create mode 100644 .bundle/config delete mode 100644 .circleci/config.yml create mode 100644 .configure create mode 100644 .configure-files/app_store_connect_fastlane_api_key.p8.enc create mode 100644 .rubocop.yml create mode 100644 .ruby-version create mode 100644 .xcode-version create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 fastlane/.gitignore create mode 100644 fastlane/Fastfile create mode 100644 fastlane/example.env create mode 100644 fastlane/lib/helpers.rb diff --git a/.buildkite/commands/install_node_dependencies.sh b/.buildkite/commands/install_node_dependencies.sh new file mode 100755 index 000000000..5c0b79c96 --- /dev/null +++ b/.buildkite/commands/install_node_dependencies.sh @@ -0,0 +1,6 @@ +#!/bin/bash -eu + +echo "--- :npm: Install Node dependencies" +# --legacy-peer-deps is necessary because of react-monaco-editor. +# See README for more details +npm ci --legacy-peer-deps diff --git a/.buildkite/commands/package_windows.ps1 b/.buildkite/commands/package_windows.ps1 new file mode 100644 index 000000000..f30bf9fca --- /dev/null +++ b/.buildkite/commands/package_windows.ps1 @@ -0,0 +1,53 @@ +# Stop script execution when a non-terminating error occurs +$ErrorActionPreference = "Stop" + +& "prepare_windows_host_for_node.ps1" + +# First try to get the env var from the process environment +$windowsCertPassword = [System.Environment]::GetEnvironmentVariable('WINDOWS_CODE_SIGNING_CERT_PASSWORD', [System.EnvironmentVariableTarget]::Process) +If ([string]::IsNullOrEmpty($windowsCertPassword)) { + # If it fails, try from the machine-wide environment + $windowsCertPassword = [System.Environment]::GetEnvironmentVariable('WINDOWS_CODE_SIGNING_CERT_PASSWORD', [System.EnvironmentVariableTarget]::Machine) +} + +If ([string]::IsNullOrEmpty($windowsCertPassword)) { + Write-Host "[!] WINDOWS_CODE_SIGNING_CERT_PASSWORD is not set in either process or machine environments." + Exit 1 +} else { + [System.Environment]::SetEnvironmentVariable('CSC_KEY_PASSWORD', $windowsCertPassword, [System.EnvironmentVariableTarget]::Machine) + Write-Host "Environment variable CSC_KEY_PASSWORD set to the value of WINDOWS_CODE_SIGNING_CERT_PASSWORD." +} + +Write-Host "--- :windows: Configure Windows code signing" +# The pfx path comes from the prepare script above. +# TODO: Move the set instruction in the script at the plugin level? +$certPath = (Convert-Path .\certificate.pfx) +If (Test-Path $certPath) { + [System.Environment]::SetEnvironmentVariable('CSC_LINK', $certPath, [System.EnvironmentVariableTarget]::Machine) + Write-Host "Environment variable CSC_LINK set to $certPath" +} else { + Write-Host "[!] certificate.pfx file does not exist." + Exit 1 +} + +# Workaround for CI not finding the certificate. +# See failure such as +# https://buildkite.com/automattic/simplenote-electron/builds/71#01900b28-9508-4bfe-bc80-63464afeaa3e/292-567 +Import-PfxCertificate -FilePath $certPath -CertStoreLocation Cert:\LocalMachine\Root -Password (ConvertTo-SecureString -String $env:WINDOWS_CODE_SIGNING_CERT_PASSWORD -AsPlainText -Force) + +Write-Host "--- :windows: Installing make" +choco install make + +Write-Host "--- :npm: Installing dependencies" +npm ci --legacy-peer-deps + +Write-Host "--- :lock_with_ink_pen: Decrypting secrets" +make decrypt_conf_production + +Write-Host "--- :node: Building app" +make build + +Write-Host "--- :windows: Packaging for Windows" +make package-win32 SKIP_BUILD=true + +If ($LastExitCode -ne 0) { Exit $LastExitCode } diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml new file mode 100644 index 000000000..8f30241b2 --- /dev/null +++ b/.buildkite/pipeline.yml @@ -0,0 +1,106 @@ +env: + BUILDKITE_PLUGINS_ALWAYS_CLONE_FRESH: 1 + # Uncomment this to get more logs during the electron-builder calls. + # Useful for debugging, but very noisy + # DEBUG: electron-builder + +steps: + - label: Lint + key: lint + env: + NODE_ENV: test + plugins: + - $NVM_PLUGIN + command: | + .buildkite/commands/install_node_dependencies.sh + echo "--- :eslint: Lint" + make lint + + - label: Test + key: test + env: + NODE_ENV: test + plugins: + - $NVM_PLUGIN + command: | + .buildkite/commands/install_node_dependencies.sh + echo "--- :jest: Test" + npm test + + # Notice that we build the app in each platform because it takes ~1-2 minutes + # to do so which is comparable to a dedicated build step, archiving the + # artifacts, uploading them, then downloading them in each package step. + # + # Also notice that we package for the different platforms on every build. + # It's up to the elector-builder configuration to decided whether to upload + # the artifacts to a GitHub release. + # + # See: + # - Makefile PUBLISH value + # - https://www.electron.build/configuration/publish + + - label: Package on macOS + key: package-macos + agents: + queue: mac + env: + IMAGE_ID: $IMAGE_ID + CSC_FOR_PULL_REQUEST: true + plugins: + - $CI_TOOLKIT_PLUGIN + - $NVM_PLUGIN + command: | + .buildkite/commands/install_node_dependencies.sh + echo "--- Fetch code signing identity" + install_gems + bundle exec fastlane configure_code_signing + echo "--- Decrypt secrets" + make decrypt_conf_production + bundle exec fastlane run configure_apply + echo "--- Build" + make build + echo "--- Package" + make package-osx SKIP_BUILD=true + artifact_paths: + - release/*.dmg + - release/*.dmg.blockmap + - release/latest*.yml + + - label: Package on Windows + key: package-windows + agents: + queue: windows + plugins: + - $CI_TOOLKIT_PLUGIN + command: .buildkite/commands/package_windows.ps1 + env: + CSC_FOR_PULL_REQUEST: true + artifact_paths: + - release\*.exe + # Notice that this will not signed. + # electron-builder logs "AppX is not signed reason=Windows Store only build" + # The behavior occurs in CircleCI, too. See: + # https://app.circleci.com/pipelines/github/Automattic/simplenote-electron/3150/workflows/9970dee9-bc25-432a-a659-38ed5d4d1c36/jobs/25900?invite=true#step-106-66244_55 + - release\*.appx + - release\*.blockmap + - release\*.yml + + - label: Package on Linux + key: package-linux + plugins: + - $CI_TOOLKIT_PLUGIN + - $NVM_PLUGIN + command: | + .buildkite/commands/install_node_dependencies.sh + echo "--- Build" + make build + echo "--- Decrypt secrets" + make decrypt_conf_production + echo "--- Package" + make package-linux SKIP_BUILD=true + env: + CSC_FOR_PULL_REQUEST: true + artifact_paths: + - release/*.deb + - release/*.tar.gz + - release/*.yml diff --git a/.buildkite/shared-pipeline-vars b/.buildkite/shared-pipeline-vars new file mode 100755 index 000000000..f4fcb493b --- /dev/null +++ b/.buildkite/shared-pipeline-vars @@ -0,0 +1,13 @@ +#!/bin/sh + +# This file is `source`'d before calling `buildkite-agent pipeline upload`, and can be used +# to set up some variables that will be interpolated in the `.yml` pipeline before uploading it. + +# The ~> modifier is not currently used, but we check for it just in case +XCODE_VERSION=$(sed -E -n 's/^(~> )?(.*)/xcode-\2/p' .xcode-version) +CI_TOOLKIT_PLUGIN_VERSION='mokagio/windows-utils' +NVM_PLUGIN_VERSION='0.3.0' + +export IMAGE_ID="$XCODE_VERSION" +export CI_TOOLKIT_PLUGIN="automattic/a8c-ci-toolkit#$CI_TOOLKIT_PLUGIN_VERSION" +export NVM_PLUGIN="automattic/nvm#$NVM_PLUGIN_VERSION" diff --git a/.bundle/config b/.bundle/config new file mode 100644 index 000000000..8515e56f3 --- /dev/null +++ b/.bundle/config @@ -0,0 +1,4 @@ +--- +BUNDLE_PATH: "vendor/bundle" +BUNDLE_JOBS: "3" +BUNDLE_RETRY: "3" diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index a59b886cb..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,300 +0,0 @@ -version: 2.1 - -orbs: - win: circleci/windows@2.2.0 - -references: - decrypt: &decrypt - run: - name: Decrypt assets - command: | - openssl aes-256-cbc -md md5 -d -in ./resources/certificates/win.p12.enc -out ./resources/certificates/win.p12 -k ${SECRETS_ENCRYPTION_KEY_2024} - openssl aes-256-cbc -md md5 -d -in ./resources/certificates/mac.p12.enc -out ./resources/certificates/mac.p12 -k ${SECRETS_ENCRYPTION_KEY} - openssl aes-256-cbc -d -in ./resources/secrets/config.json.enc -out ./config.json -pbkdf2 -k ${SECRETS_ENCRYPTION_KEY} - job_filters: &job_filters - branches: - ignore: - - webapp - - webapp-develop - - webapp-staging - tags: - only: /.*/ - restore_nvm: &restore_nvm - restore_cache: - name: Restoring NVM cache - keys: - - v1-nvm-0-33-11-{{ arch }}-{{ checksum ".nvmrc" }} - - v1-nvm-0-33-11-{{ arch }} - setup_nvm: &setup_nvm - run: - name: Install nvm and node version - command: | - set +e - set +u - set +x - NODE_VERSION=$(cat .nvmrc) - export NVM_DIR="${HOME}/.nvm" - mkdir -p "$NVM_DIR" - if [ ! -f "${NVM_DIR}/nvm.sh" ]; then - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash - fi - [ -s "${NVM_DIR}/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" - nvm install "$NODE_VERSION" - nvm alias default "$NODE_VERSION" - nvm use "$NODE_VERSION" - save_nvm: &save_nvm - save_cache: - name: Saving NVM cache - key: v1-nvm-0-33-11-{{ arch }}-{{ checksum ".nvmrc" }} - paths: - - ~/.nvm - npm_install: &npm_install - run: - name: Npm install - command: | - source $HOME/.nvm/nvm.sh - nvm use - npm install --legacy-peer-deps - npm_restore_cache: &npm_restore_cache - restore_cache: - name: Restore npm cache - keys: - - v2-npm-{{ arch }}-{{ checksum "package-lock.json" }} - npm_save_cache: &npm_save_cache - save_cache: - name: Save npm cache - key: v2-npm-{{ arch }}-{{ checksum "package-lock.json" }} - paths: - - ~/.npm - app_cache_paths: &app_cache_paths - - dist - - desktop - - resources - - config.json - install_linux_deps: &install_linux_deps - run: - name: Install linux dev dependencies - command: | - sudo dpkg --add-architecture i386 - sudo apt update - sudo apt -y install libxkbfile-dev libxkbfile-dev:i386 libxext-dev libx11-dev libx11-dev:i386 libxss-dev gcc-multilib g++-multilib rpm - -jobs: - build: - docker: - - image: cimg/node:18.19.1 - shell: /bin/bash --login - working_directory: ~/simplenote - steps: - - *install_linux_deps - - checkout - - *decrypt - - *restore_nvm - - *setup_nvm - - *save_nvm - - *npm_restore_cache - - *npm_install - - run: make build - - persist_to_workspace: - root: ~/simplenote - paths: *app_cache_paths - test: - docker: - - image: cimg/node:18.19.1 - shell: /bin/bash --login - working_directory: ~/simplenote - steps: - - *install_linux_deps - - checkout - - *decrypt - - *restore_nvm - - *setup_nvm - - *save_nvm - - *npm_restore_cache - - *npm_install - - run: NODE_ENV=test npm run build - - run: npm test - - run: npm run lint - - linux: - docker: - - image: cimg/node:18.19.1 - working_directory: ~/simplenote - steps: - - checkout - - attach_workspace: - at: ~/simplenote - - *restore_nvm - - *setup_nvm - - *save_nvm - - *npm_restore_cache - - *install_linux_deps - - *npm_install - - *npm_save_cache - - run: make package-linux SKIP_BUILD=true - - run: - name: Release cleanup - command: | - set +e - rm -rf release/github - rm -rf release/linux-unpacked - rm release/builder-debug.yml - - persist_to_workspace: - root: ~/simplenote - paths: - - release - - mac: - macos: - xcode: '12.5.1' - shell: /bin/bash --login - working_directory: /Users/distiller/simplenote - steps: - - checkout - - attach_workspace: - at: /Users/distiller/simplenote - - *restore_nvm - - *setup_nvm - - *save_nvm - - *npm_restore_cache - - *npm_install - - *npm_save_cache - - run: - name: Build Mac - environment: - CSC_LINK: resources/certificates/mac.p12 - CSC_FOR_PULL_REQUEST: true - command: | - make package-osx SKIP_BUILD=true - - run: - name: Release cleanup - command: | - set +e - rm -rf release/github - rm -rf release/mac - rm release/builder-debug.yml - - persist_to_workspace: - root: /Users/distiller/simplenote - paths: - - release - - windows: - executor: - name: win/default - working_directory: C:\Users\circleci\simplenote-electron - environment: - CSC_FOR_PULL_REQUEST: true - steps: - - checkout - - attach_workspace: - at: C:\Users\circleci\simplenote-electron - - run: - name: Install make - command: choco install make - - run: - name: Install node version - command: | - $NODE_VERSION = Get-Content .\.nvmrc - nvm install $NODE_VERSION - nvm use $NODE_VERSION - - run: - name: Npm install - command: | - npm install --legacy-peer-deps - - run: - name: Build windows - command: | - # Workaround for Sign Tool "private key filter" bug in Circle's Windows image. - # Ref: https://travis-ci.community/t/codesigning-on-windows/ - # - # Fix: Import .p12 into the local certificate store. Sign Tool will use - # package.json's `certificateSubjectName` to find the imported cert. - Import-PfxCertificate -FilePath C:\Users\circleci\simplenote-electron\resources\certificates\win.p12 -CertStoreLocation Cert:\LocalMachine\Root -Password (ConvertTo-SecureString -String $env:WIN_CSC_KEY_PASSWORD -AsPlainText -Force) - npx electron-builder --win -p onTag - - run: - name: Release cleanup - command: | - rm release/builder-debug.yml - - persist_to_workspace: - root: C:\Users\circleci\simplenote-electron - paths: - - release\*.exe - - release\*.appx - - release\*.yml - windowsstore: - executor: - name: win/default - working_directory: C:\Users\circleci\simplenote-electron - environment: - CSC_LINK: '' - WIN_CSC_LINK: '' - steps: - - checkout - - attach_workspace: - at: C:\Users\circleci\simplenote-electron - - run: - name: Install make - command: choco install make - - run: - name: Install node version - command: | - $NODE_VERSION = Get-Content .\.nvmrc - nvm install $NODE_VERSION - nvm use $NODE_VERSION - - run: - name: Npm install - command: | - npm install --legacy-peer-deps - - run: - name: Build windows - command: | - npx electron-builder --win --config=./electron-builder-appx.json -p onTag - - persist_to_workspace: - root: C:\Users\circleci\simplenote-electron - paths: - - release\*.appx - artifacts: - docker: - - image: buildpack-deps:trusty - working_directory: simplenote - steps: - - attach_workspace: - at: /tmp/simplenote - - store_artifacts: - path: /tmp/simplenote/release - -workflows: - simplenote: - jobs: - - build: - filters: *job_filters - - test: - filters: *job_filters - - linux: - requires: - - build - filters: *job_filters - - mac: - requires: - - build - filters: *job_filters - - windows: - requires: - - build - filters: *job_filters - - windowsstore: - requires: - - build - filters: - branches: - only: - - none - tags: - only: /.*/ - - artifacts: - requires: - - linux - - mac - - windows - - windowsstore - filters: *job_filters diff --git a/.configure b/.configure new file mode 100644 index 000000000..cf84aa23d --- /dev/null +++ b/.configure @@ -0,0 +1,15 @@ +{ + "project_name": "simplenote-electron", + "branch": "trunk", + "pinned_hash": "bbd0130868d58b2e59c909433df83f4ae6721b76", + "files_to_copy": [ + { + "file": "iOS/app_store_connect_fastlane_api_key.p8", + "destination": "~/.configure/simplenote-electron/secrets/app_store_connect_api_key.p8", + "encrypt": true + } + ], + "file_dependencies": [ + + ] +} \ No newline at end of file diff --git a/.configure-files/app_store_connect_fastlane_api_key.p8.enc b/.configure-files/app_store_connect_fastlane_api_key.p8.enc new file mode 100644 index 0000000000000000000000000000000000000000..b346a16de8331c5f09a4e9986f804d8d0887d972 GIT binary patch literal 272 zcmV+r0q_2O_M{DEPw=@FR}dQmn<^2xy)BvtuF||-wKoJj@g77ml^T2(_{BatCyDO4 zFLq7Y+_J4IAu4@}J;kxhZWkY2knX4W6i7Uh)BgR9f;t3 zS(K@LW9jY6Sx+(XRVU7pXiHhJ;j2(BQhfC>GXQOorHc;Tz^67+G455gvkWzm0SFFy zeizcB^?gvbkbTw%ZPc(ty(J`v8^<9%hG{NtNfD0jW;L=Jo|0+T7q8>O6O_5fzx7q~ Wz^XU|Z0dJ8M|)us=9kol#^pW3 2.219' +# This comment avoids typing to switch to a development version for testing. +# +# gem 'fastlane-plugin-wpmreleasetoolkit', git: 'https://github.com/wordpress-mobile/release-toolkit', ref: '' +gem 'fastlane-plugin-wpmreleasetoolkit', '~> 11.0' +# TODO: Remove once Dangermattic is set up +gem 'rubocop', '~> 1.61' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000..49f38b2ab --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,304 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.7) + base64 + nkf + rexml + activesupport (7.1.3.3) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + artifactory (3.0.17) + ast (2.4.2) + atomos (0.1.3) + aws-eventstream (1.3.0) + aws-partitions (1.937.0) + aws-sdk-core (3.196.1) + aws-eventstream (~> 1, >= 1.3.0) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.8) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.82.0) + aws-sdk-core (~> 3, >= 3.193.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.151.0) + aws-sdk-core (~> 3, >= 3.194.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.8) + aws-sigv4 (1.8.0) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + base64 (0.2.0) + bigdecimal (3.1.8) + buildkit (1.6.0) + sawyer (>= 0.6) + chroma (0.2.0) + claide (1.1.0) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + concurrent-ruby (1.3.1) + connection_pool (2.4.1) + declarative (0.0.20) + diffy (3.4.2) + digest-crc (0.6.5) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.6.20240107) + dotenv (2.8.1) + drb (2.2.1) + emoji_regex (3.2.3) + excon (0.110.0) + faraday (1.10.3) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) + http-cookie (~> 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.0) + faraday (~> 1.0) + fastimage (2.3.1) + fastlane (2.220.0) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.8, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.3, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored (~> 1.2) + commander (~> 4.6) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 4.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 1.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 1.0) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.3) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-env (>= 1.6.0, < 2.0.0) + google-cloud-storage (~> 1.31) + highline (~> 2.0) + http-cookie (~> 1.0.5) + json (< 3.0.0) + jwt (>= 2.1.0, < 3) + mini_magick (>= 4.9.4, < 5.0.0) + multipart-post (>= 2.0.0, < 3.0.0) + naturally (~> 2.2) + optparse (>= 0.1.1, < 1.0.0) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.5) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (~> 3) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) + fastlane-plugin-wpmreleasetoolkit (11.0.1) + activesupport (>= 6.1.7.1) + buildkit (~> 1.5) + chroma (= 0.2.0) + diffy (~> 3.3) + fastlane (~> 2.213) + git (~> 1.3) + google-cloud-storage (~> 1.31) + java-properties (~> 0.3.0) + nokogiri (~> 1.11, < 1.17) + octokit (~> 6.1) + parallel (~> 1.14) + plist (~> 3.1) + progress_bar (~> 1.3) + rake (>= 12.3, < 14.0) + rake-compiler (~> 1.0) + xcodeproj (~> 1.22) + gh_inspector (1.1.3) + git (1.19.1) + addressable (~> 2.8) + rchardet (~> 1.8) + google-apis-androidpublisher_v3 (0.54.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-core (0.11.3) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + rexml + google-apis-iamcredentials_v1 (0.17.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-playcustomapp_v1 (0.13.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-storage_v1 (0.31.0) + google-apis-core (>= 0.11.0, < 2.a) + google-cloud-core (1.7.0) + google-cloud-env (>= 1.0, < 3.a) + google-cloud-errors (~> 1.0) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.4.0) + google-cloud-storage (1.47.0) + addressable (~> 2.8) + digest-crc (~> 0.4) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.31.0) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + mini_mime (~> 1.0) + googleauth (1.8.1) + faraday (>= 0.17.3, < 3.a) + jwt (>= 1.4, < 3.0) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-cookie (1.0.5) + domain_name (~> 0.5) + httpclient (2.8.3) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + java-properties (0.3.0) + jmespath (1.6.2) + json (2.7.2) + jwt (2.8.1) + base64 + language_server-protocol (3.17.0.3) + mini_magick (4.12.0) + mini_mime (1.1.5) + minitest (5.23.1) + multi_json (1.15.0) + multipart-post (2.4.1) + mutex_m (0.2.0) + nanaimo (0.3.0) + naturally (2.2.1) + nkf (0.2.0) + nokogiri (1.16.5-arm64-darwin) + racc (~> 1.4) + octokit (6.1.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + options (2.3.2) + optparse (0.5.0) + os (1.1.4) + parallel (1.24.0) + parser (3.3.2.0) + ast (~> 2.4.1) + racc + plist (3.7.1) + progress_bar (1.3.4) + highline (>= 1.6) + options (~> 2.3.0) + public_suffix (5.0.5) + racc (1.8.0) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rchardet (1.8.0) + regexp_parser (2.9.2) + representable (3.2.0) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.2.8) + strscan (>= 3.0.9) + rouge (2.0.7) + rubocop (1.64.1) + json (~> 2.3) + language_server-protocol (>= 3.17.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.31.1, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + security (0.1.5) + signet (0.19.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.10) + CFPropertyList + naturally + strscan (3.1.0) + terminal-notifier (2.0.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.2) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + uber (0.1.0) + unicode-display_width (2.5.0) + word_wrap (1.0.0) + xcodeproj (1.24.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + rexml (~> 3.2.4) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.1) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + arm64-darwin-22 + +DEPENDENCIES + fastlane (~> 2.219) + fastlane-plugin-wpmreleasetoolkit (~> 11.0) + rubocop (~> 1.61) + +BUNDLED WITH + 2.4.21 diff --git a/Makefile b/Makefile index 6b8137d02..04d4c30f7 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,10 @@ endif THIS_MAKEFILE_PATH := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) THIS_DIR := $(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) +CONF_FILE_ENCRYPTED=./resources/secrets/config.json.enc +CONF_FILE_LOCAL=./config-local.json +CONF_FILE=./config.json + NPM ?= $(NODE) $(shell which npm) NPM_BIN = $(shell npm bin) @@ -46,8 +50,16 @@ DEV_SERVER ?= false # electron-builder publish option # options: always|onTag|onTagOrDraft|never -PUBLISH ?= onTag - +# +# Unfortunately, electron-builder does not recognize Buildkite as a provider, so we need to manually check that. +# See https://github.com/electron-userland/electron-builder/blob/14942b70a5da79a5e36e330f64de66ec501b4ac6/packages/electron-publish/src/publisher.ts#L139 +# +# Notice the use of ?= to still be able to override at call time +ifeq ($(strip $(BUILDKITE_TAG)),) + PUBLISH ?= never +else + PUBLISH ?= always +endif # Main targets .PHONY: start @@ -91,11 +103,23 @@ build-app: .PHONY: build-if-not-exists build-if-not-exists: config.json - @if [ -f $(SIMPLENOTE_JS) ]; then true; else make build; fi + @if [ -f $(SIMPLENOTE_JS) ]; then \ + echo "File $(SIMPLENOTE_JS) exists, skipping build."; \ + true; \ + else \ + echo "File $(SIMPLENOTE_JS) does not exist, running build."; \ + make build; \ + fi .PHONY: build-if-changed build-if-changed: build-if-not-exists - @if [ $(SIMPLENOTE_CHANGES_STD) -eq 0 ]; then true; else make build; fi; + @if [ $(SIMPLENOTE_CHANGES_STD) -eq 0 ]; then \ + echo "No changes detected, skipping build."; \ + true; \ + else \ + echo "Changes detected, running build."; \ + make build; \ + fi # Build binaries only @@ -118,12 +142,13 @@ package: build-if-changed .PHONY: package-win32 package-win32: + @echo Packaging .exe... + @npx electron-builder --win -p $(PUBLISH) ifeq ($(IS_WINDOWS),true) - @echo Building .appx as well + @echo Packaging .appx as well... @npx electron-builder --win -p $(PUBLISH) --config=./electron-builder-appx.json else - @echo Skipping .appx as we are not on a Windows host - @npx electron-builder --win -p $(PUBLISH) + @echo Skipping packaging .appx because we are not running on a Windows machine. endif .PHONY: package-osx @@ -143,15 +168,15 @@ node_modules/%: @npm install $(notdir $@) --legacy-peer-deps node_modules: package.json - @npm prune + @npm prune --legacy-peer-deps @npm install --legacy-peer-deps @touch node_modules # Checks config.json: -ifeq (,$(wildcard $(THIS_DIR)$/config.json)) - $(error config.json not found. Required file, see docs) +ifeq (,$(wildcard $(THIS_DIR)$/$CONF_FILE)) + $(error $(CONF_FILE) not found. Required file, see docs) endif @@ -178,16 +203,36 @@ lint-js: # encrypted config file .PHONY: _pwd_prompt decrypt_conf encrypt_conf -CONF_FILE=./resources/secrets/config.json.enc - # 'private' task for echoing instructions _pwd_prompt: @echo "Check the secret store for Simplenote!" -# to create config +# to create config for local development decrypt_conf: _pwd_prompt - openssl aes-256-cbc -d -in ${CONF_FILE} -out ./config-local.json -pbkdf2 + openssl aes-256-cbc -d -in ${CONF_FILE_ENCRYPTED} -out ${CONF_FILE_LOCAL} -pbkdf2 -# for updating config +# for updating the stored config with the local values encrypt_conf: _pwd_prompt - openssl aes-256-cbc -e -in config-local.json -out ${CONF_FILE} -pbkdf2 + openssl aes-256-cbc -e -in ${CONF_FILE_LOCAL} -out ${CONF_FILE_ENCRYPTED} -pbkdf2 + +# There's likely a neater way to conditionally decrypt the config but: +# +# - This was added in the context of a time restricted effort to deploy a new version +# - It seems safer to add a new task rather than modifying existing ones and meddling with the dependencies tree +# - config.json is tracked under Git, which means we ought to be extra careful with the edits that go into it. We don't want leakages +decrypt_conf_production: +ifeq ($(strip $(CI)),) + $(error "'make decrypt_conf' should only run in CI environments!") +else +ifeq ($(NODE_ENV),production) + @echo "$(CONF_FILE) not found. Attempting to decode because running for prod (NODE_ENV = $(NODE_ENV))..." +ifeq ($(strip $(SECRETS_ENCRYPTION_KEY)),) + $(error Could not decode $(CONF_FILE) because SECRETS_ENCRYPTION_KEY is missing from environment.) +else + @openssl aes-256-cbc -d -in $(CONF_FILE_ENCRYPTED) -out $(CONF_FILE) -pbkdf2 -k ${SECRETS_ENCRYPTION_KEY} + @echo "Successfully decoded $(CONF_FILE_ENCRYPTED) into $(CONF_FILE)." +endif +else + @echo "Will not attempt to decode $(CONF_FILE_ENCRYPTED) because not running in production (NODE_ENV = $(NODE_ENV))." +endif +endif diff --git a/after_sign_hook.js b/after_sign_hook.js index 46b6fc323..96a0961b6 100644 --- a/after_sign_hook.js +++ b/after_sign_hook.js @@ -1,5 +1,6 @@ const fs = require('fs'); const path = require('path'); +const dotenv = require('dotenv'); module.exports = async function (params) { // Only notarize the app on Mac OS only. @@ -7,6 +8,51 @@ module.exports = async function (params) { return; } + const appStoreConnectKeyPath = path.join( + process.env.HOME, + '.configure', + 'simplenote-electron', + 'secrets', + 'app_store_connect_api_key.p8' + ); + + const envPath = path.join( + process.env.HOME, + '.a8c-apps/simplenote-electron.env' + ); + if (fs.existsSync(envPath)) { + dotenv.config({ path: envPath }); + } else { + // eslint-disable-next-line no-console + console.log( + `No env file found at ${envPath}. Looking for required env vars individually...` + ); + let errors = []; + if (process.env.APP_STORE_CONNECT_API_KEY_KEY_ID === undefined) { + errors.push( + 'APP_STORE_CONNECT_API_KEY_KEY_ID value not found in env. Please set it.' + ); + } + if (process.env.APP_STORE_CONNECT_API_KEY_ISSUER_ID === undefined) { + errors.push( + 'APP_STORE_CONNECT_API_KEY_ISSUER_ID value not found in env. Please set it.' + ); + } + if (fs.existsSync(appStoreConnectKeyPath) === false) { + errors.push( + `Key file not found at ${appStoreConnectKeyPath}. Please add it.` + ); + } + + if (errors.length > 0) { + throw new Error( + `Could not begin signing macOS build. Errors: ${errors.join('\n')}` + ); + } else { + console.log('All required env vars found. Moving on...'); + } + } + // Same appId in electron-builder. let appId = 'com.automattic.simplenote'; @@ -27,13 +73,12 @@ module.exports = async function (params) { const electron_notarize = require('@electron/notarize'); await electron_notarize.notarize({ appPath: appPath, - // TODO: Move to using API key - appleId: process.env.NOTARIZATION_ID, - appleIdPassword: process.env.NOTARIZATION_PWD, - teamId: '99KV9Z6BKV', + appleApiKey: appStoreConnectKeyPath, + appleApiKeyId: process.env.APP_STORE_CONNECT_API_KEY_KEY_ID, + appleApiIssuer: process.env.APP_STORE_CONNECT_API_KEY_ISSUER_ID, }); } catch (error) { - console.error(error); // eslint-disable-line no-console + throw new Error(`Notarization failed with error:\n${error}`); } console.log(`Done notarizing ${appId}`); // eslint-disable-line no-console diff --git a/fastlane/.gitignore b/fastlane/.gitignore new file mode 100644 index 000000000..8035ae185 --- /dev/null +++ b/fastlane/.gitignore @@ -0,0 +1,2 @@ +report.xml +README.md diff --git a/fastlane/Fastfile b/fastlane/Fastfile new file mode 100644 index 000000000..91184a4c0 --- /dev/null +++ b/fastlane/Fastfile @@ -0,0 +1,65 @@ +# frozen_string_literal: true + +require 'dotenv' +require 'json' + +fastlane_version '2.0' + +default_platform :mac + +PROJECT_ROOT_FOLDER = File.dirname(File.expand_path(__dir__)) + +ENV_FILE_NAME = 'simplenote-electron.env' +USER_ENV_FILE_PATH = File.join(Dir.home, '.a8c-apps', ENV_FILE_NAME) + +# TODO: This is duplicated with `after_sign_hook.js`. It would be nice to have a single source of truth. +TEAM_ID = 'PZYM8XX95Q' + +CODE_SIGNING_STORAGE_OPTIONS = { + storage_mode: 's3', + s3_bucket: 'a8c-fastlane-match', + s3_region: 'us-east-2' +}.freeze + +# Required for sync_code_signing to authenticate with S3. +CODE_SIGNING_ENV_VARS = %w[ + MATCH_S3_ACCESS_KEY + MATCH_S3_SECRET_ACCESS_KEY + MATCH_PASSWORD +].freeze + +APP_BUNDLE_IDENTIFIER = JSON.load_file!(File.join(PROJECT_ROOT_FOLDER, 'electron-builder.json'))['appId'] + +# Required for app_store_connect_api_key to generate the key information to pass down the call chain. +ASC_API_KEY_ENV_VARS = %w[ + APP_STORE_CONNECT_API_KEY_KEY_ID + APP_STORE_CONNECT_API_KEY_ISSUER_ID + APP_STORE_CONNECT_API_KEY_KEY +].freeze + +import 'lib/helpers.rb' + +before_all do + # This is necessary for 'match' to work correctly in CI. When running + # locally, it has no effect so it's safe to run it before all lanes. + setup_ci + + Dotenv.load(USER_ENV_FILE_PATH) +end + +platform :mac do + desc 'Download and configure code signing certificates and provisioning profiles .' + lane :configure_code_signing do |options| + require_env_vars!(*ASC_API_KEY_ENV_VARS, *CODE_SIGNING_ENV_VARS) + + sync_code_signing( + type: 'developer_id', + platform: 'macos', + team_id: TEAM_ID, + api_key: app_store_connect_api_key, + app_identifier: APP_BUNDLE_IDENTIFIER, + readonly: options.fetch(:readonly, true), + **CODE_SIGNING_STORAGE_OPTIONS + ) + end +end diff --git a/fastlane/example.env b/fastlane/example.env new file mode 100644 index 000000000..ae2de1462 --- /dev/null +++ b/fastlane/example.env @@ -0,0 +1,9 @@ +# You don't need to fill in these values for Fastlane to run. +# +# However, if a lane requires some of these environment values and they are not set here, it will fail. +APP_STORE_CONNECT_API_KEY_KEY_ID= +APP_STORE_CONNECT_API_KEY_ISSUER_ID= +APP_STORE_CONNECT_API_KEY_KEY= +MATCH_PASSWORD= +MATCH_S3_ACCESS_KEY= +MATCH_S3_SECRET_ACCESS_KEY= diff --git a/fastlane/lib/helpers.rb b/fastlane/lib/helpers.rb new file mode 100644 index 000000000..71fb58a5b --- /dev/null +++ b/fastlane/lib/helpers.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +# Use this to ensure all env vars a lane requires are set. +# +# The best place to call this is at the start of a lane, to fail early. +def require_env_vars!(*keys) + keys.each { |key| get_required_env!(key) } +end + +# Use this instead of getting values from `ENV` directly. It will throw an error if the requested value is missing. +def get_required_env!(key, env_file_path: USER_ENV_FILE_PATH) + unless ENV.key?(key) + message = "Environment variable '#{key}' is not set." + + if is_ci + UI.user_error!(message) + elsif File.exist?(env_file_path) + UI.user_error!("#{message} Consider adding it to #{env_file_path}.") + else + env_file_example_path = 'fastlane/example.env' + env_file_dir = File.dirname(env_file_path) + env_file_name = File.basename(env_file_path) + + UI.user_error! <<~MSG + #{env_file_name} not found in #{env_file_dir}! + + Please copy #{env_file_example_path} to #{env_file_path} and fill in the values for the automation you require. + + mkdir -p #{env_file_dir} && cp #{env_file_example_path} #{env_file_path} + MSG + end + end + + value = ENV.fetch(key) + + UI.user_error!("Env var for key #{key} is set but empty. Please set a value for #{key}.") if value.to_s.empty? + + value +end + +def prompt_user_for_app_store_connect_credentials + require 'credentials_manager' + + # If Fastlane cannot instantiate a user, it will ask the caller for the email. + # Once we have it, we can set it as `FASTLANE_USER` in the environment (which has lifecycle limited to this call) so that the next commands will already have access to it. + # Note: if the user is already available to `AccountManager`, setting it in the env is redundant, but Fastlane doesn't provide a way to check it so we have to do it anyway. + ENV['FASTLANE_USER'] = CredentialsManager::AccountManager.new.user +end diff --git a/package-lock.json b/package-lock.json index c17bf9dea..2ad12f49a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simplenote", - "version": "2.22.0-beta3", + "version": "2.22.0-beta7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simplenote", - "version": "2.22.0-beta3", + "version": "2.22.0-beta7", "license": "GPL-2.0", "dependencies": { "@automattic/color-studio": "2.6.0", @@ -79,7 +79,7 @@ "@babel/preset-env": "7.24.5", "@babel/preset-react": "7.24.1", "@babel/preset-typescript": "7.24.1", - "@electron/notarize": "2.3.0", + "@electron/notarize": "2.3.2", "@testing-library/react": "12.1.5", "@types/cookie": "0.6.0", "@types/debug": "4.1.12", @@ -2473,9 +2473,9 @@ } }, "node_modules/@electron/notarize": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.3.0.tgz", - "integrity": "sha512-EiTBU0BwE7HZZjAG1fFWQaiQpCuPrVGn7jPss1kUjD6eTTdXXd29RiZqEqkgN7xqt/Pgn4g3I7Saqovanrfj3w==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.3.2.tgz", + "integrity": "sha512-zfayxCe19euNwRycCty1C7lF7snk9YwfRpB5M8GLr1a4ICH63znxaPNAubrMvj0yDvVozqfgsdYpXVUnpWBDpg==", "dev": true, "dependencies": { "debug": "^4.1.1", diff --git a/package.json b/package.json index 9f7b643c9..20ec6d03a 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "email": "support@simplenote.com" }, "productName": "Simplenote", - "version": "2.22.0-beta3", + "version": "2.22.0-beta7", "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", @@ -78,6 +78,7 @@ "debug": "4.3.4", "electron": "30.0.2", "electron-builder": "24.13.3", + "@electron/notarize": "2.3.2", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-jest": "28.5.0", From f5ff6a1aa5d59b204ebd1f57a8773b6a586e34ab Mon Sep 17 00:00:00 2001 From: Kat Hagan Date: Mon, 24 Jun 2024 01:28:24 -0400 Subject: [PATCH 07/24] Prioritize `config-local` and update dependencies (#3223) Co-authored-by: Gio Lodi --- .buildkite/commands/package_windows.ps1 | 2 +- .buildkite/pipeline.yml | 6 ++--- Makefile | 35 +++++++++---------------- RELEASE-NOTES.md | 2 +- get-config.js | 22 ++++------------ package-lock.json | 25 +++++++++++------- package.json | 3 +-- webpack.config.js | 6 ++--- 8 files changed, 42 insertions(+), 59 deletions(-) diff --git a/.buildkite/commands/package_windows.ps1 b/.buildkite/commands/package_windows.ps1 index f30bf9fca..406ba2812 100644 --- a/.buildkite/commands/package_windows.ps1 +++ b/.buildkite/commands/package_windows.ps1 @@ -42,7 +42,7 @@ Write-Host "--- :npm: Installing dependencies" npm ci --legacy-peer-deps Write-Host "--- :lock_with_ink_pen: Decrypting secrets" -make decrypt_conf_production +make decrypt_conf Write-Host "--- :node: Building app" make build diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 8f30241b2..57222b3e5 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -55,7 +55,7 @@ steps: install_gems bundle exec fastlane configure_code_signing echo "--- Decrypt secrets" - make decrypt_conf_production + make decrypt_conf bundle exec fastlane run configure_apply echo "--- Build" make build @@ -92,10 +92,10 @@ steps: - $NVM_PLUGIN command: | .buildkite/commands/install_node_dependencies.sh + echo "--- Decrypt secrets" + make decrypt_conf echo "--- Build" make build - echo "--- Decrypt secrets" - make decrypt_conf_production echo "--- Package" make package-linux SKIP_BUILD=true env: diff --git a/Makefile b/Makefile index 04d4c30f7..f20bc9f37 100644 --- a/Makefile +++ b/Makefile @@ -11,8 +11,7 @@ THIS_MAKEFILE_PATH := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) THIS_DIR := $(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) CONF_FILE_ENCRYPTED=./resources/secrets/config.json.enc -CONF_FILE_LOCAL=./config-local.json -CONF_FILE=./config.json +CONF_FILE=./config-local.json NPM ?= $(NODE) $(shell which npm) NPM_BIN = $(shell npm bin) @@ -205,34 +204,26 @@ lint-js: # 'private' task for echoing instructions _pwd_prompt: +ifeq ($(strip $(CI)),) @echo "Check the secret store for Simplenote!" +else + @echo "Use input disabled because running in CI (CI env var set)" +endif +OPENSSL_CMD=openssl aes-256-cbc -pbkdf2 +DECRYPT_CMD=${OPENSSL_CMD} -d -in ${CONF_FILE_ENCRYPTED} -out ${CONF_FILE} # to create config for local development decrypt_conf: _pwd_prompt - openssl aes-256-cbc -d -in ${CONF_FILE_ENCRYPTED} -out ${CONF_FILE_LOCAL} -pbkdf2 - -# for updating the stored config with the local values -encrypt_conf: _pwd_prompt - openssl aes-256-cbc -e -in ${CONF_FILE_LOCAL} -out ${CONF_FILE_ENCRYPTED} -pbkdf2 - -# There's likely a neater way to conditionally decrypt the config but: -# -# - This was added in the context of a time restricted effort to deploy a new version -# - It seems safer to add a new task rather than modifying existing ones and meddling with the dependencies tree -# - config.json is tracked under Git, which means we ought to be extra careful with the edits that go into it. We don't want leakages -decrypt_conf_production: ifeq ($(strip $(CI)),) - $(error "'make decrypt_conf' should only run in CI environments!") + ${DECRYPT_CMD} else -ifeq ($(NODE_ENV),production) - @echo "$(CONF_FILE) not found. Attempting to decode because running for prod (NODE_ENV = $(NODE_ENV))..." ifeq ($(strip $(SECRETS_ENCRYPTION_KEY)),) $(error Could not decode $(CONF_FILE) because SECRETS_ENCRYPTION_KEY is missing from environment.) else - @openssl aes-256-cbc -d -in $(CONF_FILE_ENCRYPTED) -out $(CONF_FILE) -pbkdf2 -k ${SECRETS_ENCRYPTION_KEY} - @echo "Successfully decoded $(CONF_FILE_ENCRYPTED) into $(CONF_FILE)." -endif -else - @echo "Will not attempt to decode $(CONF_FILE_ENCRYPTED) because not running in production (NODE_ENV = $(NODE_ENV))." + @${DECRYPT_CMD} -k ${SECRETS_ENCRYPTION_KEY} endif endif + +# for updating the stored config with the local values +encrypt_conf: _pwd_prompt + ${OPENSSL_CMD} -e -in ${CONF_FILE} -out ${CONF_FILE_ENCRYPTED} diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 2e714252d..8df796535 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -10,7 +10,7 @@ ### Other Changes -- Updated dependencies, build pipeline and documentation [#3183](https://github.com/Automattic/simplenote-electron/pull/3183), [#3097](https://github.com/Automattic/simplenote-electron/pull/3097), [#3194](https://github.com/Automattic/simplenote-electron/pull/3194), [#3195](https://github.com/Automattic/simplenote-electron/pull/3195) +- Updated dependencies, build pipeline and documentation [#3183](https://github.com/Automattic/simplenote-electron/pull/3183), [#3097](https://github.com/Automattic/simplenote-electron/pull/3097), [#3194](https://github.com/Automattic/simplenote-electron/pull/3194), [#3195](https://github.com/Automattic/simplenote-electron/pull/3195), [#3218](https://github.com/Automattic/simplenote-electron/pull/3218), [#3223](https://github.com/Automattic/simplenote-electron/pull/3223) ## [v2.21.0] diff --git a/get-config.js b/get-config.js index 0bd0c3497..70fb07941 100644 --- a/get-config.js +++ b/get-config.js @@ -1,18 +1,7 @@ -function readLocalConfig() { - try { - const config = require('./config-local'); - if (typeof config === 'function') { - throw new Error('Invalid config file. Config must be JSON.'); - } - return config; - } catch { - return false; - } -} - function readConfig() { + const configPath = './config-local'; try { - const config = require('./config'); + const config = require(configPath); if (typeof config === 'function') { throw new Error('Invalid config file. Config must be JSON.'); } @@ -20,9 +9,8 @@ function readConfig() { } catch (e) { // eslint-disable-next-line no-console console.error( - 'Could not read in the required configuration file.\n' + - 'This file should exist as `config.json` inside the project root directory.\n' + - 'Please consult the project README.md for further information.\n' + `Could not load the required configuration file at ${configPath}.\n` + + 'Please consult the project README.md for further information.' ); throw e; @@ -30,7 +18,7 @@ function readConfig() { } function getConfig() { - var config = readLocalConfig() || readConfig(); + var config = readConfig(); var pkg = require('./package.json'); config.version = pkg.version; return config; diff --git a/package-lock.json b/package-lock.json index 2ad12f49a..54e6bcdc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6746,12 +6746,13 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -10546,10 +10547,11 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -12108,6 +12110,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -19592,6 +19595,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -20912,9 +20916,10 @@ } }, "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, diff --git a/package.json b/package.json index 20ec6d03a..2eb13b320 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "@babel/preset-env": "7.24.5", "@babel/preset-react": "7.24.1", "@babel/preset-typescript": "7.24.1", - "@electron/notarize": "2.3.0", + "@electron/notarize": "2.3.2", "@testing-library/react": "12.1.5", "@types/cookie": "0.6.0", "@types/debug": "4.1.12", @@ -78,7 +78,6 @@ "debug": "4.3.4", "electron": "30.0.2", "electron-builder": "24.13.3", - "@electron/notarize": "2.3.2", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-jest": "28.5.0", diff --git a/webpack.config.js b/webpack.config.js index 56374c96d..cb9dbec39 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -75,9 +75,9 @@ module.exports = () => { ], }, resolve: { - // fallback: { - // setImmediate: require.resolve('setimmediate/'), - // }, + fallback: { + './config-local': require.resolve('./config'), // fallback to config.json if config-local.json is missing + }, extensions: ['.js', '.jsx', '.json', '.scss', '.css', '.ts', '.tsx'], modules: ['node_modules'], }, From 0995039311bf286a2f0ff8e139c879a64888c23f Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 24 Jun 2024 15:29:57 +1000 Subject: [PATCH 08/24] Bump version to 2.22.0-beta8 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 54e6bcdc3..9b4bc70a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simplenote", - "version": "2.22.0-beta7", + "version": "2.22.0-beta8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simplenote", - "version": "2.22.0-beta7", + "version": "2.22.0-beta8", "license": "GPL-2.0", "dependencies": { "@automattic/color-studio": "2.6.0", diff --git a/package.json b/package.json index 2eb13b320..a4e5f976a 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "email": "support@simplenote.com" }, "productName": "Simplenote", - "version": "2.22.0-beta7", + "version": "2.22.0-beta8", "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", From b791d63db80c70771f644d5eb5fbdd5b7acefb3a Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Wed, 3 Jul 2024 12:18:51 +1000 Subject: [PATCH 09/24] Bump version to 2.22.0 stable --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b4bc70a8..8828eb715 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simplenote", - "version": "2.22.0-beta8", + "version": "2.22.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simplenote", - "version": "2.22.0-beta8", + "version": "2.22.0", "license": "GPL-2.0", "dependencies": { "@automattic/color-studio": "2.6.0", diff --git a/package.json b/package.json index a4e5f976a..73fccbf47 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "email": "support@simplenote.com" }, "productName": "Simplenote", - "version": "2.22.0-beta8", + "version": "2.22.0", "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", From cf502a806ed215d51b2ece5f206c5839aab333ea Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 16 Jul 2024 14:13:04 +1000 Subject: [PATCH 10/24] Bump version to v2.22.1-beta1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8828eb715..f970bef62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simplenote", - "version": "2.22.0", + "version": "2.22.1-beta1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simplenote", - "version": "2.22.0", + "version": "2.22.1-beta1", "license": "GPL-2.0", "dependencies": { "@automattic/color-studio": "2.6.0", diff --git a/package.json b/package.json index 73fccbf47..141494891 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "email": "support@simplenote.com" }, "productName": "Simplenote", - "version": "2.22.0", + "version": "2.22.1-beta1", "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", From 02efedb30cc6fdacc3d2cab0e0aa8eee148db269 Mon Sep 17 00:00:00 2001 From: Kat Hagan Date: Tue, 16 Jul 2024 23:02:11 -0400 Subject: [PATCH 11/24] Fix: Webpack fallback release config (#3232) * Don't pass a variable to require, it makes webpack mad * remove get-config.js because only webpack can use fs * update electron-updater due to security vulnerability * keep target set as default * add release notes assuming this is going to constitute a new 2.22.1 version --- RELEASE-NOTES.md | 6 + get-config.js | 27 -- lib/auth/index.tsx | 3 - lib/boot-with-auth.tsx | 3 - lib/boot-without-auth.tsx | 3 - lib/boot.ts | 3 - lib/global.d.ts | 10 + lib/state/analytics/middleware.ts | 3 - lib/state/simperium/middleware.ts | 5 +- package-lock.json | 551 ++++++++++++++++++++++++------ package.json | 2 +- tsconfig.json | 4 +- webpack.config.js | 39 ++- 13 files changed, 493 insertions(+), 166 deletions(-) delete mode 100644 get-config.js diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 8df796535..1d3124271 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,5 +1,11 @@ # Changelog +## [v2.22.1] + +### Fixes + +- The final release build of v2.22.0 was not correctly packaged, causing a crash on startup. Affected users will need to manually download this version, which properly includes a necessary configuration file during the build process [#3232](https://github.com/Automattic/simplenote-electron/pull/3232) + ## [v2.22.0] ### Fixes diff --git a/get-config.js b/get-config.js deleted file mode 100644 index 70fb07941..000000000 --- a/get-config.js +++ /dev/null @@ -1,27 +0,0 @@ -function readConfig() { - const configPath = './config-local'; - try { - const config = require(configPath); - if (typeof config === 'function') { - throw new Error('Invalid config file. Config must be JSON.'); - } - return config; - } catch (e) { - // eslint-disable-next-line no-console - console.error( - `Could not load the required configuration file at ${configPath}.\n` + - 'Please consult the project README.md for further information.' - ); - - throw e; - } -} - -function getConfig() { - var config = readConfig(); - var pkg = require('./package.json'); - config.version = pkg.version; - return config; -} - -module.exports = getConfig; diff --git a/lib/auth/index.tsx b/lib/auth/index.tsx index 0d463ad9d..7f348004a 100644 --- a/lib/auth/index.tsx +++ b/lib/auth/index.tsx @@ -2,7 +2,6 @@ import React, { Component, Fragment } from 'react'; import classNames from 'classnames'; import cryptoRandomString from '../utils/crypto-random-string'; import { get } from 'lodash'; -import getConfig from '../../get-config'; import MailIcon from '../icons/mail'; import SimplenoteLogo from '../icons/simplenote'; import Spinner from '../components/spinner'; @@ -48,7 +47,6 @@ export class Auth extends Component { render() { // Don't render this component when running on the web - const config = getConfig(); if (config.is_app_engine) { return null; } @@ -423,7 +421,6 @@ export class Auth extends Component { }; onWPLogin = () => { - const config = getConfig(); const redirectUrl = encodeURIComponent(config.wpcc_redirect_url); this.authState = `app-${cryptoRandomString(20)}`; const authUrl = `https://public-api.wordpress.com/oauth2/authorize?client_id=${config.wpcc_client_id}&redirect_uri=${redirectUrl}&response_type=code&scope=global&state=${this.authState}`; diff --git a/lib/boot-with-auth.tsx b/lib/boot-with-auth.tsx index a3ee31d72..23fe62227 100644 --- a/lib/boot-with-auth.tsx +++ b/lib/boot-with-auth.tsx @@ -6,7 +6,6 @@ import React from 'react'; import App from './app'; import { ErrorBoundaryWithAnalytics } from './error-boundary'; import Modal from 'react-modal'; -import getConfig from '../get-config'; import { makeStore } from './state'; import { render } from 'react-dom'; import { Provider } from 'react-redux'; @@ -16,8 +15,6 @@ import '../scss/style.scss'; import isDevConfig from './utils/is-dev-config'; -const config = getConfig(); - export const bootWithToken = ( logout: () => any, token: string, diff --git a/lib/boot-without-auth.tsx b/lib/boot-without-auth.tsx index 9da0ecddf..e355e8f15 100644 --- a/lib/boot-without-auth.tsx +++ b/lib/boot-without-auth.tsx @@ -9,8 +9,6 @@ import classNames from 'classnames'; import AboutDialog from './dialogs/about'; import ErrorBoundary from './error-boundary'; -import getConfig from '../get-config'; - import '../scss/style.scss'; type Props = { @@ -36,7 +34,6 @@ type User = { access_token?: string; }; -const config = getConfig(); const auth = new SimperiumAuth(config.app_id, config.app_key); class AppWithoutAuth extends Component { diff --git a/lib/boot.ts b/lib/boot.ts index cd6be293c..9a959c08a 100644 --- a/lib/boot.ts +++ b/lib/boot.ts @@ -5,13 +5,10 @@ import 'setimmediate'; import { parse } from 'cookie'; -import getConfig from '../get-config'; import { boot as bootWithoutAuth } from './boot-without-auth'; import { boot as bootLoggingOut } from './logging-out'; import { isElectron } from './utils/platform'; -const config = getConfig(); - const clearStorage = (): Promise => new Promise((resolveStorage) => { localStorage.removeItem('access_token'); diff --git a/lib/global.d.ts b/lib/global.d.ts index 20c8948a8..377985449 100644 --- a/lib/global.d.ts +++ b/lib/global.d.ts @@ -5,6 +5,16 @@ import * as S from './state'; declare global { const __TEST__: boolean; + const config: { + app_engine_url: string; + app_id: string; + app_key: string; + development: boolean; + is_app_engine: string; + version: string; + wpcc_client_id: string; + wpcc_redirect_url: string; + }; interface Window { __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: typeof compose; diff --git a/lib/state/analytics/middleware.ts b/lib/state/analytics/middleware.ts index cb23e6e31..e5cb155cc 100644 --- a/lib/state/analytics/middleware.ts +++ b/lib/state/analytics/middleware.ts @@ -1,11 +1,8 @@ import { debounce } from 'lodash'; import analytics from '../../analytics'; -import getConfig from '../../../get-config'; import isDevConfig from '../../utils/is-dev-config'; -const config = getConfig(); - import type * as A from '../action-types'; import type * as S from '../'; import type * as T from '../../types'; diff --git a/lib/state/simperium/middleware.ts b/lib/state/simperium/middleware.ts index f04494ce5..51ae1b166 100644 --- a/lib/state/simperium/middleware.ts +++ b/lib/state/simperium/middleware.ts @@ -2,7 +2,6 @@ import { default as createClient } from 'simperium'; import debugFactory from 'debug'; import actions from '../actions'; -import getConfig from '../../../get-config'; import { BucketQueue } from './functions/bucket-queue'; import { InMemoryBucket } from './functions/in-memory-bucket'; import { InMemoryGhost } from './functions/in-memory-ghost'; @@ -37,7 +36,7 @@ export const initSimperium = (store) => { const { dispatch, getState } = store; - const client = createClient(getConfig().app_id, token, { + const client = createClient(config.app_id, token, { objectStoreProvider: (bucket) => { switch (bucket.name) { case 'account': @@ -465,7 +464,7 @@ export const initSimperium = return result; } - case 'REALLY_LOGOUT': + case 'REALLY_LOG_OUT': stopSyncing(); localStorage.setItem('simplenote_logout', Math.random().toString()); client.end(); diff --git a/package-lock.json b/package-lock.json index f970bef62..8c8523b67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "date-fns": "3.6.0", "electron-fetch": "1.9.1", "electron-progressbar": "2.2.1", - "electron-updater": "6.1.8", + "electron-updater": "^6.3.0", "electron-window-state": "5.0.3", "file-saver": "2.0.5", "focus-trap-react": "10.2.3", @@ -3757,7 +3757,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3771,7 +3770,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -3780,7 +3778,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -3789,7 +3786,6 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -3798,14 +3794,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -4719,10 +4713,10 @@ } }, "node_modules/@types/eslint": { - "version": "8.56.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz", - "integrity": "sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==", - "dev": true, + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -4732,7 +4726,6 @@ "version": "3.7.7", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -4741,8 +4734,7 @@ "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/events": { "version": "3.0.3", @@ -4876,8 +4868,7 @@ "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/keyv": { "version": "3.1.4", @@ -4910,7 +4901,6 @@ "version": "20.11.30", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", - "dev": true, "dependencies": { "undici-types": "~5.26.4" } @@ -4980,7 +4970,7 @@ "version": "17.0.11", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", - "dev": true, + "devOptional": true, "dependencies": { "@types/react": "*" } @@ -5447,7 +5437,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -5456,26 +5445,22 @@ "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -5485,14 +5470,12 @@ "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -5504,7 +5487,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -5513,7 +5495,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -5521,14 +5502,12 @@ "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -5544,7 +5523,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -5557,7 +5535,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -5569,7 +5546,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", @@ -5583,7 +5559,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" @@ -5645,14 +5620,12 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/7zip-bin": { "version": "5.2.0", @@ -5695,7 +5668,6 @@ "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -5747,7 +5719,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5802,7 +5773,6 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -6000,6 +5970,65 @@ "node": ">= 10.0.0" } }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -6617,6 +6646,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -6850,7 +6908,6 @@ "version": "4.23.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -6906,7 +6963,6 @@ "url": "https://feross.org/support" } ], - "optional": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -6936,8 +6992,7 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/buffer-xor": { "version": "1.0.3", @@ -7178,7 +7233,6 @@ "version": "1.0.30001599", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz", "integrity": "sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==", - "dev": true, "funding": [ { "type": "opencollective", @@ -7253,7 +7307,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, "engines": { "node": ">=6.0" } @@ -7547,6 +7600,39 @@ "node": ">=0.10.0" } }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -7910,6 +7996,51 @@ "buffer": "^5.1.0" } }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", @@ -8850,6 +8981,61 @@ "node": ">=14.0.0" } }, + "node_modules/electron-builder-squirrel-windows": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-24.13.3.tgz", + "integrity": "sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "app-builder-lib": "24.13.3", + "archiver": "^5.3.1", + "builder-util": "24.13.1", + "fs-extra": "^10.1.0" + } + }, + "node_modules/electron-builder-squirrel-windows/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-builder-squirrel-windows/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-builder-squirrel-windows/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/electron-builder/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -9097,15 +9283,15 @@ "node_modules/electron-to-chromium": { "version": "1.4.711", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.711.tgz", - "integrity": "sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w==", - "dev": true + "integrity": "sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w==" }, "node_modules/electron-updater": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.8.tgz", - "integrity": "sha512-hhOTfaFAd6wRHAfUaBhnAOYc+ymSGCWJLtFkw4xJqOvtpHmIdNHnXDV9m1MHC+A6q08Abx4Ykgyz/R5DGKNAMQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.3.0.tgz", + "integrity": "sha512-3Xlezhk+dKaSQrOnkQNqCGiuGSSUPO9BV9TQZ4Iig6AyTJ4FzJONE5gFFc382sY53Sh9dwJfzKsA3DxRHt2btw==", + "license": "MIT", "dependencies": { - "builder-util-runtime": "9.2.3", + "builder-util-runtime": "9.2.5", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", @@ -9116,9 +9302,10 @@ } }, "node_modules/electron-updater/node_modules/builder-util-runtime": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.3.tgz", - "integrity": "sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw==", + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.5.tgz", + "integrity": "sha512-HjIDfhvqx/8B3TDN4GbABQcgpewTU4LMRTQPkVpKYV3lsuxEJoIfvg09GyWTNmfVNSUAYf+fbTN//JX4TH20pg==", + "license": "MIT", "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" @@ -9251,7 +9438,6 @@ "version": "5.16.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -9439,8 +9625,7 @@ "node_modules/es-module-lexer": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.2.tgz", - "integrity": "sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==", - "dev": true + "integrity": "sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==" }, "node_modules/es-object-atoms": { "version": "1.0.0", @@ -9542,7 +9727,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, "engines": { "node": ">=6" } @@ -9808,7 +9992,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -10117,7 +10300,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -10129,7 +10311,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -10138,7 +10319,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } @@ -10393,8 +10573,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { "version": "1.3.0", @@ -10421,8 +10600,7 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -10787,6 +10965,14 @@ "node": ">= 0.6" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -10979,8 +11165,7 @@ "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/global-agent": { "version": "3.0.0", @@ -14522,8 +14707,7 @@ "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -14707,6 +14891,20 @@ "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -14746,7 +14944,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, "engines": { "node": ">=6.11.5" } @@ -14809,16 +15006,48 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/lodash.escaperegexp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -14831,6 +15060,14 @@ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/logform": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", @@ -15007,8 +15244,7 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/merge2": { "version": "1.4.1", @@ -15290,8 +15526,7 @@ "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/next-tick": { "version": "1.1.0", @@ -15441,8 +15676,7 @@ "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -17092,6 +17326,42 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -17899,7 +18169,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -18393,7 +18662,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -18411,7 +18679,6 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -19293,7 +19560,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -19315,6 +19581,40 @@ "node": ">=10" } }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -19391,7 +19691,6 @@ "version": "5.29.2", "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz", "integrity": "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==", - "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -19409,7 +19708,6 @@ "version": "5.3.10", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", @@ -19443,7 +19741,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -19452,7 +19749,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -19466,7 +19762,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -19484,7 +19779,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -19498,8 +19792,7 @@ "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/test-exclude": { "version": "6.0.0", @@ -19872,8 +20165,7 @@ "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -19945,7 +20237,6 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -19975,7 +20266,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -20177,7 +20467,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", - "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -20207,7 +20496,6 @@ "version": "5.91.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", - "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", @@ -20501,7 +20789,6 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, "engines": { "node": ">=10.13.0" } @@ -20510,7 +20797,6 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, "peerDependencies": { "acorn": "^8" } @@ -20519,7 +20805,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, "engines": { "node": ">=0.8.x" } @@ -20528,7 +20813,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -21064,6 +21348,61 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } } } } diff --git a/package.json b/package.json index 141494891..b84a0b6e7 100644 --- a/package.json +++ b/package.json @@ -122,7 +122,7 @@ "date-fns": "3.6.0", "electron-fetch": "1.9.1", "electron-progressbar": "2.2.1", - "electron-updater": "6.1.8", + "electron-updater": "6.3.0", "electron-window-state": "5.0.3", "file-saver": "2.0.5", "focus-trap-react": "10.2.3", diff --git a/tsconfig.json b/tsconfig.json index c4cb34415..b94741e11 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,8 +2,8 @@ "compilerOptions": { "baseUrl": ".", "target": "esnext", - "module": "nodenext", - "moduleResolution": "nodenext", + "module": "esnext", + "moduleResolution": "bundler", "allowJs": true, "jsx": "react", "noEmit": true, diff --git a/webpack.config.js b/webpack.config.js index cb9dbec39..a70271db9 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,13 +1,37 @@ const autoprefixer = require('autoprefixer'); const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); -const getConfig = require('./get-config'); const spawnSync = require('child_process').spawnSync; const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); const NodePolyfillPlugin = require('node-polyfill-webpack-plugin'); +const fs = require('fs'); -// Object.assign(global, { WebSocket: require('ws') }); +function readConfig() { + const configPath = fs.existsSync('./config-local.json') + ? './config-local.json' + : './config.json'; + + try { + const config = fs.readFileSync(configPath, 'utf8'); + return JSON.parse(config); + } catch (e) { + // eslint-disable-next-line no-console + console.error( + `Could not load the required configuration file.\n` + + 'Please consult the project README.md for further information.' + ); + + throw e; + } +} + +function getConfig() { + var config = readConfig(); + var pkg = require('./package.json'); + config.version = pkg.version; + return config; +} module.exports = () => { const isDevMode = process.env.NODE_ENV === 'development'; @@ -26,7 +50,7 @@ module.exports = () => { publicPath: config.web_app_url + '/', }), }, - // target: 'node', + // target: 'browserslist', // this seems like it should be "node" or "electron-renderer" but those both crash module: { rules: [ { @@ -75,9 +99,6 @@ module.exports = () => { ], }, resolve: { - fallback: { - './config-local': require.resolve('./config'), // fallback to config.json if config-local.json is missing - }, extensions: ['.js', '.jsx', '.json', '.scss', '.css', '.ts', '.tsx'], modules: ['node_modules'], }, @@ -139,12 +160,6 @@ module.exports = () => { resourceRegExp: /^\.\/locale$/, contextRegExp: /moment$/, }), - // new webpack.ProvidePlugin({ - // setImmediate: require.resolve('setimmediate/'), - // }), - // new webpack.ProvidePlugin({ - // isemail: require.resolve('isemail/'), - // }), ], }; }; From f8c76d585678c7ec09f8faead52da664668f2a71 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Thu, 18 Jul 2024 11:08:29 +1000 Subject: [PATCH 12/24] Bump version to 2.22.1 stable --- package-lock.json | 532 +++++++++------------------------------------- package.json | 2 +- 2 files changed, 99 insertions(+), 435 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8c8523b67..dfdb3b229 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simplenote", - "version": "2.22.1-beta1", + "version": "2.22.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simplenote", - "version": "2.22.1-beta1", + "version": "2.22.1", "license": "GPL-2.0", "dependencies": { "@automattic/color-studio": "2.6.0", @@ -21,7 +21,7 @@ "date-fns": "3.6.0", "electron-fetch": "1.9.1", "electron-progressbar": "2.2.1", - "electron-updater": "^6.3.0", + "electron-updater": "6.3.0", "electron-window-state": "5.0.3", "file-saver": "2.0.5", "focus-trap-react": "10.2.3", @@ -3757,6 +3757,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3770,6 +3771,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -3778,6 +3780,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -3786,6 +3789,7 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -3794,12 +3798,14 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -4716,6 +4722,7 @@ "version": "8.56.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree": "*", @@ -4726,6 +4733,7 @@ "version": "3.7.7", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -4734,7 +4742,8 @@ "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true }, "node_modules/@types/events": { "version": "3.0.3", @@ -4868,7 +4877,8 @@ "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true }, "node_modules/@types/keyv": { "version": "3.1.4", @@ -4901,6 +4911,7 @@ "version": "20.11.30", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", + "dev": true, "dependencies": { "undici-types": "~5.26.4" } @@ -4970,7 +4981,7 @@ "version": "17.0.11", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", - "devOptional": true, + "dev": true, "dependencies": { "@types/react": "*" } @@ -5437,6 +5448,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -5445,22 +5457,26 @@ "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -5470,12 +5486,14 @@ "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -5487,6 +5505,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -5495,6 +5514,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -5502,12 +5522,14 @@ "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -5523,6 +5545,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -5535,6 +5558,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -5546,6 +5570,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", @@ -5559,6 +5584,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" @@ -5620,12 +5646,14 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, "node_modules/7zip-bin": { "version": "5.2.0", @@ -5668,6 +5696,7 @@ "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -5719,6 +5748,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5773,6 +5803,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -5970,65 +6001,6 @@ "node": ">= 10.0.0" } }, - "node_modules/archiver": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", - "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.4", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -6646,35 +6618,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -6908,6 +6851,7 @@ "version": "4.23.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -6963,6 +6907,7 @@ "url": "https://feross.org/support" } ], + "optional": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -6992,7 +6937,8 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/buffer-xor": { "version": "1.0.3", @@ -7233,6 +7179,7 @@ "version": "1.0.30001599", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz", "integrity": "sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -7307,6 +7254,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, "engines": { "node": ">=6.0" } @@ -7600,39 +7548,6 @@ "node": ">=0.10.0" } }, - "node_modules/compress-commons": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", - "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/compress-commons/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -7996,51 +7911,6 @@ "buffer": "^5.1.0" } }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", - "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", @@ -8981,61 +8851,6 @@ "node": ">=14.0.0" } }, - "node_modules/electron-builder-squirrel-windows": { - "version": "24.13.3", - "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-24.13.3.tgz", - "integrity": "sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "app-builder-lib": "24.13.3", - "archiver": "^5.3.1", - "builder-util": "24.13.1", - "fs-extra": "^10.1.0" - } - }, - "node_modules/electron-builder-squirrel-windows/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/electron-builder-squirrel-windows/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/electron-builder-squirrel-windows/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/electron-builder/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -9283,7 +9098,8 @@ "node_modules/electron-to-chromium": { "version": "1.4.711", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.711.tgz", - "integrity": "sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w==" + "integrity": "sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w==", + "dev": true }, "node_modules/electron-updater": { "version": "6.3.0", @@ -9438,6 +9254,7 @@ "version": "5.16.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -9625,7 +9442,8 @@ "node_modules/es-module-lexer": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.2.tgz", - "integrity": "sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==" + "integrity": "sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==", + "dev": true }, "node_modules/es-object-atoms": { "version": "1.0.0", @@ -9727,6 +9545,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, "engines": { "node": ">=6" } @@ -9992,6 +9811,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -10300,6 +10120,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -10311,6 +10132,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "engines": { "node": ">=4.0" } @@ -10319,6 +10141,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, "engines": { "node": ">=4.0" } @@ -10573,7 +10396,8 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-diff": { "version": "1.3.0", @@ -10600,7 +10424,8 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -10965,14 +10790,6 @@ "node": ">= 0.6" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -11165,7 +10982,8 @@ "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "node_modules/global-agent": { "version": "3.0.0", @@ -14707,7 +14525,8 @@ "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -14891,20 +14710,6 @@ "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -14944,6 +14749,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, "engines": { "node": ">=6.11.5" } @@ -15006,48 +14812,16 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/lodash.escaperegexp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -15060,14 +14834,6 @@ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/logform": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", @@ -15244,7 +15010,8 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/merge2": { "version": "1.4.1", @@ -15526,7 +15293,8 @@ "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/next-tick": { "version": "1.1.0", @@ -15676,7 +15444,8 @@ "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -17326,42 +17095,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -18169,6 +17902,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -18662,6 +18396,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -18679,6 +18414,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -19560,6 +19296,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, "engines": { "node": ">=6" } @@ -19581,40 +19318,6 @@ "node": ">=10" } }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -19691,6 +19394,7 @@ "version": "5.29.2", "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz", "integrity": "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==", + "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -19708,6 +19412,7 @@ "version": "5.3.10", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", @@ -19741,6 +19446,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -19749,6 +19455,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -19762,6 +19469,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -19779,6 +19487,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -19792,7 +19501,8 @@ "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/test-exclude": { "version": "6.0.0", @@ -20165,7 +19875,8 @@ "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -20237,6 +19948,7 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -20266,6 +19978,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -20467,6 +20180,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -20496,6 +20210,7 @@ "version": "5.91.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", @@ -20789,6 +20504,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, "engines": { "node": ">=10.13.0" } @@ -20797,6 +20513,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, "peerDependencies": { "acorn": "^8" } @@ -20805,6 +20522,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, "engines": { "node": ">=0.8.x" } @@ -20813,6 +20531,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -21348,61 +21067,6 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/zip-stream": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", - "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "archiver-utils": "^3.0.4", - "compress-commons": "^4.1.2", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/zip-stream/node_modules/archiver-utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", - "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "glob": "^7.2.3", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } } } } diff --git a/package.json b/package.json index b84a0b6e7..2a4360057 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "email": "support@simplenote.com" }, "productName": "Simplenote", - "version": "2.22.1-beta1", + "version": "2.22.1", "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", From 168a6323765a06692c9d26b71733cdf2544af228 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 19 Jul 2024 14:27:32 +1000 Subject: [PATCH 13/24] Bump version to 2.22.2-beta.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index dfdb3b229..8d526e818 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simplenote", - "version": "2.22.1", + "version": "2.22.2-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simplenote", - "version": "2.22.1", + "version": "2.22.2-beta.1", "license": "GPL-2.0", "dependencies": { "@automattic/color-studio": "2.6.0", diff --git a/package.json b/package.json index 2a4360057..390d5059d 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "email": "support@simplenote.com" }, "productName": "Simplenote", - "version": "2.22.1", + "version": "2.22.2-beta.1", "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", From 717fd7cabe04cce79add130def5f56d50922048f Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 19 Jul 2024 15:36:50 +1000 Subject: [PATCH 14/24] Make `electron-builder` generate updates for beta and alpha, too --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 390d5059d..88cead537 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,9 @@ "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", + "build": { + "generateUpdatesFilesForAllChannels": true + }, "scripts": { "dev": "make dev", "start": "make start NODE_ENV=development", From 987d565bed3dbfeec25b3de16e9a34ac4856366f Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 19 Jul 2024 15:37:08 +1000 Subject: [PATCH 15/24] Temporary switch to latest+beta channel for updates --- desktop/updater/auto-updater/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/updater/auto-updater/index.js b/desktop/updater/auto-updater/index.js index 5efa414aa..a9e11a36d 100644 --- a/desktop/updater/auto-updater/index.js +++ b/desktop/updater/auto-updater/index.js @@ -21,6 +21,7 @@ class AutoUpdater extends Updater { autoUpdater.on('update-downloaded', this.onDownloaded.bind(this)); autoUpdater.autoInstallOnAppQuit = false; + autoUpdater.channel = 'beta'; } // For non-user-initiated checks. From f8f95df91c7d2364a8e89a6b9f810bb949e4fcb2 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 19 Jul 2024 15:37:53 +1000 Subject: [PATCH 16/24] Remove `"dmg"` arg from `make` cmd so we can generate ZIP, too --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f20bc9f37..77c6f5363 100644 --- a/Makefile +++ b/Makefile @@ -152,7 +152,7 @@ endif .PHONY: package-osx package-osx: build-if-changed - @npx electron-builder --mac "dmg" -p $(PUBLISH) + @npx electron-builder --mac -p $(PUBLISH) .PHONY: package-linux package-linux: build-if-changed From 300d7b64b13a197af5673a3da5bdec7233e3f1b5 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 19 Jul 2024 15:56:34 +1000 Subject: [PATCH 17/24] Move `generateUpdatesFilesForAllChannels` to `electron-builder.json` Otherwise, `package.json` would have been considered the source of the configurations. --- electron-builder.json | 1 + package.json | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/electron-builder.json b/electron-builder.json index 93b0a28d1..d3b877d0b 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -1,6 +1,7 @@ { "productName": "Simplenote", "appId": "com.automattic.simplenote", + "generateUpdatesFilesForAllChannels": true, "directories": { "output": "./release", "buildResources": "./resources" diff --git a/package.json b/package.json index 88cead537..390d5059d 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,6 @@ "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", - "build": { - "generateUpdatesFilesForAllChannels": true - }, "scripts": { "dev": "make dev", "start": "make start NODE_ENV=development", From 3255475fa105e047344ee53300a14392c1b1aa18 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 19 Jul 2024 16:29:22 +1000 Subject: [PATCH 18/24] Add `mergeASARs = false` to the mac configuration See docs at https://www.electron.build/configuration/mac#:~:text=mergeASARs%20%3D%20true,for%20%E2%80%9Cuniversal%E2%80%9D%20arch. and discussion at https://github.com/electron-userland/electron-builder/issues/6735 Apparently, the option needs to be disabled at this time when building for universal Mac. --- electron-builder.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/electron-builder.json b/electron-builder.json index d3b877d0b..dfd98c4f3 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -23,7 +23,8 @@ "target": "zip", "arch": ["universal"] } - ] + ], + "mergeASARs": false }, "dmg": { "title": "Simplenote Installer", From 8993cb50876fefe8bb0689cb9c945b3e371fe29c Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 19 Jul 2024 16:46:36 +1000 Subject: [PATCH 19/24] Upload `zip` artifacts in macOS builds --- .buildkite/pipeline.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 57222b3e5..cec907ba8 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -64,6 +64,7 @@ steps: artifact_paths: - release/*.dmg - release/*.dmg.blockmap + - release/*.zip* - release/latest*.yml - label: Package on Windows From df20f1eb399211f19569415733f0ea6b2173d17f Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 19 Jul 2024 17:37:21 +1000 Subject: [PATCH 20/24] Bump version to 2.22.2-beta.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d526e818..4c0540110 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simplenote", - "version": "2.22.2-beta.1", + "version": "2.22.2-beta.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simplenote", - "version": "2.22.2-beta.1", + "version": "2.22.2-beta.2", "license": "GPL-2.0", "dependencies": { "@automattic/color-studio": "2.6.0", diff --git a/package.json b/package.json index 390d5059d..514b86cad 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "email": "support@simplenote.com" }, "productName": "Simplenote", - "version": "2.22.2-beta.1", + "version": "2.22.2-beta.2", "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com", From 98dfd5c816d4cb2a90512da465601e98729aae7e Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 9 Aug 2024 07:52:49 +1000 Subject: [PATCH 21/24] Update Windows configuration to remove AppX ambiguity (#3239) --- .buildkite/commands/package_windows.ps1 | 6 +++--- Makefile | 12 ++++++------ electron-builder-appx.json | 8 +++----- electron-builder.json | 8 -------- 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/.buildkite/commands/package_windows.ps1 b/.buildkite/commands/package_windows.ps1 index 406ba2812..5000a1d2e 100644 --- a/.buildkite/commands/package_windows.ps1 +++ b/.buildkite/commands/package_windows.ps1 @@ -26,7 +26,7 @@ If (Test-Path $certPath) { [System.Environment]::SetEnvironmentVariable('CSC_LINK', $certPath, [System.EnvironmentVariableTarget]::Machine) Write-Host "Environment variable CSC_LINK set to $certPath" } else { - Write-Host "[!] certificate.pfx file does not exist." + Write-Host "[!] Certificate file does not exist at given path $certPath." Exit 1 } @@ -38,8 +38,8 @@ Import-PfxCertificate -FilePath $certPath -CertStoreLocation Cert:\LocalMachine\ Write-Host "--- :windows: Installing make" choco install make -Write-Host "--- :npm: Installing dependencies" -npm ci --legacy-peer-deps +bash ".\.buildkite\commands\install_node_dependencies.sh" +If ($LastExitCode -ne 0) { Exit $LastExitCode } Write-Host "--- :lock_with_ink_pen: Decrypting secrets" make decrypt_conf diff --git a/Makefile b/Makefile index 77c6f5363..aec58b57c 100644 --- a/Makefile +++ b/Makefile @@ -141,14 +141,14 @@ package: build-if-changed .PHONY: package-win32 package-win32: - @echo Packaging .exe... + @echo "Packaging exe..." @npx electron-builder --win -p $(PUBLISH) -ifeq ($(IS_WINDOWS),true) - @echo Packaging .appx as well... + # Note: the configuration required to generate a code signed exe via the `nsis` target will conflict with the `appx` configuration. + # In practice, "certificateSubjectName": "Automattic, Inc." is required to sign the exe, but if that setting is present and so are the `appx` settings, there will be a failure. + # Hence the need for a separate configuration here. + # See also in https://github.com/electron-userland/electron-builder/issues/6698 + @echo "Packaging appx — with dedicated configuration to work around code signing conflicts..." @npx electron-builder --win -p $(PUBLISH) --config=./electron-builder-appx.json -else - @echo Skipping packaging .appx because we are not running on a Windows machine. -endif .PHONY: package-osx package-osx: build-if-changed diff --git a/electron-builder-appx.json b/electron-builder-appx.json index 21178a3cc..072743c42 100644 --- a/electron-builder-appx.json +++ b/electron-builder-appx.json @@ -2,8 +2,8 @@ "productName": "Simplenote", "appId": "com.automattic.simplenote", "directories": { - "output": "release", - "buildResources": "resources" + "output": "./release", + "buildResources": "./resources" }, "files": ["desktop", "dist", "shared"], "win": { @@ -29,7 +29,5 @@ "name": "simplenote", "schemes": ["simplenote"] } - ], - "afterSign": "./after_sign_hook.js", - "afterAllArtifactBuild": "./after_sign_hook.js" + ] } diff --git a/electron-builder.json b/electron-builder.json index dfd98c4f3..8a5bdd915 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -54,17 +54,9 @@ { "target": "nsis", "arch": ["ia32", "x64"] - }, - { - "target": "appx", - "arch": ["ia32", "x64"] } ] }, - "appx": { - "backgroundColor": "transparent", - "showNameOnTiles": true - }, "nsis": { "artifactName": "Simplenote-win-${version}-${arch}.${ext}", "deleteAppDataOnUninstall": true, From 2cc7f245b63e836c0d574614dc4823ba7532266f Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 16 Aug 2024 16:11:50 +1000 Subject: [PATCH 22/24] Revert back to using only latest channel for updates This reverts commit 987d565bed3dbfeec25b3de16e9a34ac4856366f. --- desktop/updater/auto-updater/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/desktop/updater/auto-updater/index.js b/desktop/updater/auto-updater/index.js index a9e11a36d..5efa414aa 100644 --- a/desktop/updater/auto-updater/index.js +++ b/desktop/updater/auto-updater/index.js @@ -21,7 +21,6 @@ class AutoUpdater extends Updater { autoUpdater.on('update-downloaded', this.onDownloaded.bind(this)); autoUpdater.autoInstallOnAppQuit = false; - autoUpdater.channel = 'beta'; } // For non-user-initiated checks. From 38ab5a963779e49f1d99e589a69787e28c26c580 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 16 Aug 2024 06:58:34 +1000 Subject: [PATCH 23/24] Remove `gconf2` dependency (#3244) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an attempt to fix the issue reported by users who cannot install Simplenote on various Linux systems because the `gconf2` dependency cannot be satisfied. See https://github.com/Automattic/simplenote-electron/issues/3241 The [`electron-builder` docs](https://www.electron.build/configuration/linux.html) mention that `gconf2` can give issues if one wants to support [KDE](https://kde.org/). > If need to support KDE, `gconf2` and `gconf-service` should be removed > as it’s no longer used > [by GNOME](https://packages.debian.org/bullseye/gconf2). Moreover, [the `gconf2` entry in the Debian packages repository](https://packages.debian.org/bullseye/gconf2) states: > This package is for legacy applications and no longer used by GNOME. Given the above, this PR is an attempt to see what the app would do without the dependency. My guess is that everything should run fine in most modern systems, because all information points to `gconf2` not being in use there. --- electron-builder.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/electron-builder.json b/electron-builder.json index 8a5bdd915..f74362b7b 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -104,8 +104,7 @@ } ], "deb": { - "compression": "gz", - "depends": ["gconf2"] + "compression": "gz" }, "afterSign": "./after_sign_hook.js", "afterAllArtifactBuild": "./after_sign_hook.js" From 7261aa1cca2f0c62395b9e35a9c628b3326a6176 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Fri, 16 Aug 2024 16:13:13 +1000 Subject: [PATCH 24/24] Bump version to 2.22.2-beta.3 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4c0540110..c15fda328 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simplenote", - "version": "2.22.2-beta.2", + "version": "2.22.2-beta.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simplenote", - "version": "2.22.2-beta.2", + "version": "2.22.2-beta.3", "license": "GPL-2.0", "dependencies": { "@automattic/color-studio": "2.6.0", diff --git a/package.json b/package.json index 514b86cad..23016e0df 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "email": "support@simplenote.com" }, "productName": "Simplenote", - "version": "2.22.2-beta.2", + "version": "2.22.2-beta.3", "main": "desktop/index.js", "license": "GPL-2.0", "homepage": "https://simplenote.com",