diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index a0f69ecd..361940ad 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -26,7 +26,7 @@ jobs: uses: softprops/action-gh-release@v1 with: tag_name: ${{steps.tag.outputs.tag}} - name: Release ${{steps.tag.outputs.tag}} + name: ${{steps.tag.outputs.tag}} body_path: ./Release.md draft: false prerelease: false @@ -50,12 +50,16 @@ jobs: node-version: 16.13.0 - name: Install dependencies run: npm install - - name: Build Workbench & create archive for ${{ matrix.os }} + - name: Create release assets directory + run: mkdir -p dist + - name: Build Workbench & create release archive for ${{ matrix.os }} run: npm run publish - - name: Verify Generated archive in dist/ + - name: Create source code archive (including node_modules) + run: npm run srcarchive + - name: Verify Generated archives in dist/ run: ls ./dist - name: Upload release assets uses: softprops/action-gh-release@v1 with: tag_name: ${{ github.ref_name }} - files: dist/* \ No newline at end of file + files: dist/* diff --git a/AUTHORS.rst b/AUTHORS.rst new file mode 100644 index 00000000..9e4c2c63 --- /dev/null +++ b/AUTHORS.rst @@ -0,0 +1,20 @@ +The following organizations or individuals have contributed to ScanCode Workbench: + +- @Aayush-hub => Aayush Garg +- @AyanSinhaMahapatra => Ayan Sinha Mahapatra +- @camillem => camillem +- @chinyeungli => Chin Yeung +- @dependabot[bot] => null +- @dotarjun => Arjun +- @jdaguil => Jillian Daguil +- @johnmhoran => John M. Horan +- @kopal960 => Kopal Rustagi +- @lakshay-angrish => null +- @OmkarPh => Omkar Phansopkar +- @pombredanne => Philippe Ombredanne +- @pranav1698 => Pranav Kulshrestha +- @Pushpit07 => Pushpit +- @RituRajSingh878 => Ritu Raj Singh +- @steven-esser => Steven Esser +- @Vishal-raj-1 => Vishal Rajput +- @vsvipul => Vipul diff --git a/CHANGELOG.rst b/CHANGELOG.rst index f8cf1a7b..d29b3f61 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `__ +[Unreleased (v4.0.1)] +-------------------------- + +**This ScanCode-Workbench release contains schema changes: scans will have to be re-imported** +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +-------------------- +New Features +~~~~~~~~~~~~ + +- Support for To-do items by @OmkarPh in #593 +- Track & filter reviewed licenses by @OmkarPh in #571 + +Bug Fixes +~~~~~~~~~ + +- Fixed Irregular auto-scroll to target path by @OmkarPh in #610 +- Fixed all vulnerabilities & updated packages by @OmkarPh in #611 +- Restore old app name by @dotarjun in #615 +- Fixed compund SPDX expression resolution in detection & clue matches by @OmkarPh in #619 +- Reduce release build size by removing redundant `node_modules` dependencies by @OmkarPh in #623 + + [v4.0.0] - 2023-10-26 -------------------------- @@ -52,7 +75,6 @@ New Features - Working indicator for queries - Diff modal for Matched text & Rule text in Matches table - Bug Fixes ~~~~~~~~~ diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst new file mode 100644 index 00000000..ff7acfd9 --- /dev/null +++ b/CONTRIBUTING.rst @@ -0,0 +1,91 @@ +============ +Contributing +============ + +Contributions are welcome and appreciated! +Every little bit helps, and a credit will always be given. + +.. _issues : https://github.com/nexB/scancode-workbench/issues +__ issues_ + +If you are new to ScanCode Workbench and want to find easy tickets to work on, +check `easy issues `_ + +When contributing to ScanCode Workbench (such as code, bugs, documentation, etc.) you +agree to the Developer `Certificate of Origin `_ +and the ScanCode license (see the `NOTICE `_ file). +The same approach is used by Linux Kernel developers and several other projects. + +For commits, it is best to simply add a line like this to your commit message, +with your name and email:: + + Signed-off-by: Jane Doe + +Please try to write a good commit message, see `good commit message wiki +`_ for +details. In particular use the imperative for your commit subject: think that +you are giving an order to the codebase to update itself. + + +Feature requests and feedback +============================= + +To send feedback or ask a question, `file an issue `_ + +If you are proposing a feature: + +* Explain how it would work. +* Keep the scope as simple as possible to make it easier to implement. +* Remember that your contributions are welcomed to implement this feature! + + +Chat with other developers +========================== + +For other questions, discussions, and chats, we have official Matrix rooms: + +- `discuss room `_ (for all projects) +- `scancode-workbench room `_ + + +Bug reports +=========== + +When `reporting a bug`__ please include: + +* Your operating system name, version, and architecture. +* Your ScanCode Workbench version. +* Any additional details about your local setup that might be helpful to + diagnose this bug. +* Detailed steps to reproduce the bug, such as the scan file you imported, filters you applied, etc. +* The error messages or failure trace if any. +* If helpful, you can add a screenshot as an issue attachment when relevant or + some extra file as a link to a `Gist `_. + + +Documentation improvements +========================== + +Documentation can come in the form of new documentation pages/sections, tutorials/how-to documents, +any other general upgrades, etc. Even a minor typo fix is welcomed. + +If something is missing in the documentation or if you found some part confusing, +please file an issue with your suggestions for improvement. Your help and contribution make ScanCode Workbench docs better, we love hearing from you! + +The ScanCode Workbench documentation is hosted at `scancode-workbench.readthedocs.io `_. + +If you want to contribute to Scancode Workbench Documentation, you'll find `this guide here `_ helpful. + + +Pull Request Guidelines +----------------------- + +If you need a code review or feedback while you are developing the code just +create a pull request. You can add new commits to your branch as needed. + +For merging, your request would need to: + +1. Include unit tests that are passing (run ``npm test``). +2. Update documentation as needed for new UI screen, functionality, etc. +3. Add a note to ``CHANGELOG.rst`` about the changes. +4. Add your name to ``AUTHORS.rst``. diff --git a/README.md b/README.md index 4d44592b..42e30762 100644 --- a/README.md +++ b/README.md @@ -72,9 +72,7 @@ Note: Due to usage of native modules, a build must be done on target platform on $ npm run publish ``` -After building is done, you can find `ScanCode-Workbench` under -`dist/ScanCode-Workbench--x64-`. Archives (tar.gz and .zip) are -also built. +You can find the executible `ScanCode-Workbench-` inside `out/ScanCode-Workbench---` and distributable archive (.tar.gz or .zip) in `dist/` ## Testing diff --git a/Release.md b/Release.md index f0d90daf..2fd1303d 100644 --- a/Release.md +++ b/Release.md @@ -1,27 +1,7 @@ ## Major changes -- Ported to React + Typescript variant !! - Under GSoC by @OmkarPh -- Support for scancode-toolkit v32.x output format v3.0.0 -- Updated Tableview library & columns -- New sections: License Detections explorer, Packages explorer, ScanInfo, About -- Support for multiple windows -- Maintain history of imports -- Updated dependencies -- Created UI to support top level packages-deps obtained in latest scans -- Support for Drag & drop JSON/SQLite files -- Github actions to create automated releases - Exception: macos arm64 is not yet support by Github actions yet, needs manual build & upload -- Retain column order & states https://github.com/nexB/scancode-workbench/pull/568 -- License clues section in Licenses explorer https://github.com/nexB/scancode-workbench/pull/570 -- Go to specific file from licenses & packages explorer https://github.com/nexB/scancode-workbench/pull/572 -- Diff modal for Matched text & Rule text in Matches table https://github.com/nexB/scancode-workbench/pull/577 -- Working indicator for queries https://github.com/nexB/scancode-workbench/pull/583 -- Dashboard updates https://github.com/nexB/scancode-workbench/pull/585 -- Close file & cleanup https://github.com/nexB/scancode-workbench/pull/600 -- Unit tests https://github.com/nexB/scancode-workbench/pull/591 -- Dependency Info dashboard updates https://github.com/nexB/scancode-workbench/pull/594 -- Updated documentation https://github.com/nexB/scancode-workbench/pull/602 +- Support for To-do items by @OmkarPh in #593 +- Track & filter reviewed licenses by @OmkarPh in #571 ## ScanCode Toolkit Compatibility @@ -29,15 +9,17 @@ This v4.0.0 of ScanCode Workbench is compatible with scans from any [ScanCode To ## Bug fixes -- Prevent crashes on unsupported scans -- Provision for header-less scans (Test scans) -- Table column fixes -- Fixed UI anomalies -- Invalid path query fix (Data for files with similar prefix were colliding) -- window title update & occasional sqlite error for packages https://github.com/nexB/scancode-workbench/pull/560 -- license detection parser issues, trimmed filter options, hide empty 'other dependencies' https://github.com/nexB/scancode-workbench/pull/569 -- Refined UX including consistent scrollbars, tooltips, Search in licenses, filters for dependencies https://github.com/nexB/scancode-workbench/pull/587 -- Updated piechart tooltip https://github.com/nexB/scancode-workbench/pull/582 -- Automatic height for tables https://github.com/nexB/scancode-workbench/pull/606 -- Fixed Empty directory being shown with file icon https://github.com/nexB/scancode-workbench/pull/604 -- Fix irregular scroll behavior for files in deeply nested FileTree https://github.com/nexB/scancode-workbench/pull/599 +- Fixed Irregular auto-scroll to target path by @OmkarPh in #610 +- Fixed all vulnerabilities & updated packages by @OmkarPh in #611 +- Restore old app name by @dotarjun in #615 +- Fixed compund SPDX expression resolution in detection & clue matches by @OmkarPh in #619 +- Reduce release build size by removing redundant `node_modules` dependencies by @OmkarPh in #623 + +## Framework + +- Electorn [v28.1.0](https://releases.electronjs.org/release/v28.1.0) +- Chromium [v120.0.6099.109](https://source.chromium.org/chromium/chromium/src/+/refs/tags/120.0.6099.109:) + +# New Contributors + +- @dotarjun made his first contribution in #615 \ No newline at end of file diff --git a/SCANCODE_WORKBENCH_VERSION b/SCANCODE_WORKBENCH_VERSION new file mode 100644 index 00000000..cc868b62 --- /dev/null +++ b/SCANCODE_WORKBENCH_VERSION @@ -0,0 +1 @@ +4.0.1 \ No newline at end of file diff --git a/archive_builder.py b/archive_builder.py deleted file mode 100755 index f43dc952..00000000 --- a/archive_builder.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/python - -# Copyright (c) nexB Inc. and others. All rights reserved. - -""" -Run this script to build ScanCode Workbench. The script detects which OS -it is running on and produces a build archive only for this platform. -It is meant to run primarily on Github actions -""" - -import os -import sys -import json -import platform - -# Expected output file name: ScanCode-Workbench-{platform}-{arch}-{version}.tar.gz -# Example: ScanCode-Workbench-linux-x64-4.0.0.tar.gz - -# Archive properties -APP_NAME = 'ScanCode-Workbench' -APP_BUNDLE_ID = 'com.nexb.scancode-workbench' -ARCHIVE_DIR = 'dist' -PACKAGE_DIR = 'out' # @NOTE - PACKAGE_DIR must be same as 'out' property in packager.js - -# Get scancode workbench version from package.json -with open('package.json') as json_file: - package_json_object = json.load(json_file) - APP_VERSION = package_json_object['version'] - -# platform-specific properties -ARCH = str(platform.machine()) -SYSTEM_PLATFORM = str(sys.platform).lower() -on_linux = on_windows = on_mac = False - -if 'linux' in SYSTEM_PLATFORM: - PLATFORM_NAME = 'linux' - PLATFORM = 'linux' - on_linux = True - -elif 'win32' in SYSTEM_PLATFORM: - PLATFORM_NAME = 'windows' - PLATFORM = 'win32' - on_windows = True - -elif 'darwin' in SYSTEM_PLATFORM: - PLATFORM_NAME = 'macos' - PLATFORM = 'darwin' - on_mac = True - -else: - raise Exception('Unsupported OS/platform %r' % SYSTEM_PLATFORM) - -# Prepare file name for archive using platform, architecture & app version -archive_file_name = '-'.join([APP_NAME, PLATFORM_NAME, ARCH, APP_VERSION]) -print(f"Composed Archive file name: '{archive_file_name}'") - -# Ensure archive directory dist/ is created, before attempting to store archive inside it -ensure_archive_directory = f"mkdir -p {ARCHIVE_DIR}" -print("Executing mkdir command:", ensure_archive_directory) -os.system(ensure_archive_directory) - -# Prepare .zip file for windows -if on_windows: - zip_command = f"powershell Compress-Archive {PACKAGE_DIR}/* {ARCHIVE_DIR}/{archive_file_name}.zip" - print("Executing zip command on powershell:", zip_command) - os.system(zip_command) - print(f"Zip file ready: {ARCHIVE_DIR}/{archive_file_name}.zip") - -# Prepare .tar.gz file for mac & linux -else: - tar_command = f"tar -czf {ARCHIVE_DIR}/{archive_file_name}.tar.gz -C {PACKAGE_DIR} ." - print("Executing tar command:", tar_command) - os.system(tar_command) - print(f"Tar file ready: {ARCHIVE_DIR}/{archive_file_name}.tar.gz") - -print("Build succeeded !!!") diff --git a/attribution.html b/attribution.html index 52984f64..9220827b 100644 --- a/attribution.html +++ b/attribution.html @@ -97,11 +97,6 @@

About ScanCode Workbench 4.0.0:

- -

ScanCode Workbench contains the following image assets:

- Import file illustration - - Work illustrations by Storyset -

diff --git a/buildSourceArchive.js b/buildSourceArchive.js new file mode 100644 index 00000000..beccfcdd --- /dev/null +++ b/buildSourceArchive.js @@ -0,0 +1,42 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const os = require("os"); +const fs = require("fs"); +const path = require("path"); +const archiver = require("archiver"); +const version = require("./package.json").version; + +const archiveDirectory = "dist"; +const platform = os.platform(); +const arch = os.arch(); + +// Determine the packaging format based on the OS +const isWindows = platform === "win32"; +const archiveFormat = isWindows ? "zip" : "tar"; +const archiveExtension = isWindows ? "zip" : "tar.gz"; + +console.log("Building source archive ..."); + +// Ensure that the archive destination directory exists +if (!fs.existsSync(archiveDirectory)) { + fs.mkdirSync(archiveDirectory); +} + +// Create the archive file with the same name as the package directory +const archiveFileName = `ScanCode-Workbench-${version}-${platform}-${arch}-src.${archiveExtension}`; +const archiveFilePath = path.join(archiveDirectory, archiveFileName); +const output = fs.createWriteStream(archiveFilePath); +const archive = archiver(archiveFormat, { gzip: true }); + +output.on("close", () => { + console.log(`Created source archive at ${archiveFilePath}`); +}); + +archive.pipe(output); + +archive.glob("**/*", { + dot: true, + cwd: process.cwd(), + ignore: ["dist/**", "out/**", ".git/**"], +}); + +archive.finalize(); diff --git a/docs/source/contribute/building.rst b/docs/source/contribute/building.rst index ed9c0b89..7986593f 100644 --- a/docs/source/contribute/building.rst +++ b/docs/source/contribute/building.rst @@ -66,29 +66,32 @@ Windows Release Instructions ==================== -You can build a ``dist`` directory and a ``tar/zip`` file containing executable for your platform -by running: +ScanCode Workbench release is built using `electron-forge `__. +You can build the application for your platform using following command: .. code-block:: bash npm run publish -After building is done, you can find ScanCode-Workbench under -``dist/ScanCode-Workbench---``. +You can find the executible ``ScanCode-Workbench-`` inside +``out/ScanCode-Workbench---`` and +a distributable archive in ``dist/`` directory. -Archives are also built as: +Archives are built as: - ``tar.gz`` - Linux / MacOS - ``.zip`` - Windows -.. Note:: A build for any of the three target platforms must be executed on the targeted platform. +.. Note:: + Due to usage of native modules, a build must be done on target platform only. + For example, a linux build must be done on linux machine only. + Building Documentation ====================== Create python environment, make docs - -.. code-block:: none +.. code-block:: bash # Clone this repository git clone https://github.com/nexB/scancode-workbench.git diff --git a/docs/source/contribute/testing.rst b/docs/source/contribute/testing.rst index 0086286f..20c34e2f 100644 --- a/docs/source/contribute/testing.rst +++ b/docs/source/contribute/testing.rst @@ -4,7 +4,7 @@ Test ABCM functionality using: -.. code-block:: none +.. code-block:: bash $ npm test diff --git a/electron-builder.json b/electron-builder.json deleted file mode 100644 index 2f21a52b..00000000 --- a/electron-builder.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "appId": "com.electron.scancode-workbench", - "productName": "ScanCode Workbench", - "directories": { - "output": "out", - "buildResources": "build-res" - }, - "files": [ - "package.json", - "src/**/*", - "app/**/*", - "node_modules", - "./main.tsx" - ], - "extraMetadata": { - "main": "./src/main.ts" - }, - "mac": { - "target": { - "target": "dmg", - "arch": "universal" - } - }, - "dmg": { - "background": null, - "backgroundColor": "#ffffff", - "window": { - "width": "400", - "height": "300" - }, - "contents": [ - { - "x": 100, - "y": 100 - }, - { - "x": 300, - "y": 100, - "type": "link", - "path": "/Applications" - } - ] - }, - "win": { - "target": { - "target": "nsis", - "arch": ["x64", "ia32"] - } - }, - "nsis": { - "oneClick": false, - "allowToChangeInstallationDirectory": true - }, - "linux": { - "target": "AppImage", - "category": "Utility" - }, - "buildVersion": "1" -} diff --git a/forge.config.js b/forge.config.js new file mode 100644 index 00000000..2d923923 --- /dev/null +++ b/forge.config.js @@ -0,0 +1,84 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const { version } = require("./package.json"); +const { + addMetaDataFilesToPackage, + buildPackageArchive, +} = require("./package-utils"); + +const APP_NAME_WITH_VERSION = `ScanCode-Workbench-${version}`; +const ARCHIVE_DIR = "dist"; + +const MetaDataFiles = [ + "apache-2.0.LICENSE", + "AUTHORS.rst", + "CHANGELOG.rst", + "CODE_OF_CONDUCT.rst", + "CONTRIBUTING.rst", + "NOTICE", + "package-lock.json", + "README.md", + "SCANCODE_WORKBENCH_VERSION", + "workbench.ABOUT", +]; + +/** @type {import('@electron-forge/shared-types').ForgeConfig} */ +const forgeConfig = { + /** @type {import('@electron/packager').Options} */ + packagerConfig: { + name: APP_NAME_WITH_VERSION, + appBundleId: "com.nexb.scancode-workbench", + icon: "src/assets/app-icon/icon", + dir: ".", + out: "out", + overwrite: true, + prune: true, + protocols: [ + { + name: "JSON File", + schemes: ["file"], + extensions: ["json"], + }, + { + name: "SQLite Database", + schemes: ["file"], + extensions: ["sqlite", "db"], + }, + ], + }, + plugins: [ + { + name: "@electron-forge/plugin-webpack", + config: { + mainConfig: "./webpack.main.config.js", + renderer: { + config: "./webpack.renderer.config.js", + entryPoints: [ + { + html: "./src/index.html", + js: "./src/renderer.ts", + name: "main_window", + }, + ], + }, + }, + }, + { + name: "@timfish/forge-externals-plugin", + config: { + externals: ["sqlite3"], + includeDeps: true, + }, + }, + ], + hooks: { + postPackage: async (_, options) => { + // Add metadata files like Readme, License, etc to the packaged app + addMetaDataFilesToPackage(options.outputPaths[0], MetaDataFiles); + + // Build zip/tar.gz archive of the packaged app + buildPackageArchive(options.outputPaths[0], ARCHIVE_DIR); + }, + }, +}; + +module.exports = forgeConfig; diff --git a/jest.config.js b/jest.config.js index 3ebbe745..217f02a6 100644 --- a/jest.config.js +++ b/jest.config.js @@ -2,6 +2,6 @@ module.exports = { preset: "ts-jest", testEnvironment: "node", - modulePathIgnorePatterns: ["test-old", "dist"], - testPathIgnorePatterns: ["node_modules", "dist", "test-old"], + modulePathIgnorePatterns: ["node_modules/", "out/", "dist/"], + testPathIgnorePatterns: ["node_modules/", "out/", "dist/"], }; diff --git a/package-lock.json b/package-lock.json index bd1e63b5..71e436f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "scancode-workbench", - "version": "4.0.0", + "version": "4.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "scancode-workbench", - "version": "4.0.0", + "version": "4.0.1", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -20,6 +20,7 @@ "ag-grid-community": "^30.2.1", "ag-grid-react": "^30.2.1", "allotment": "^1.19.3", + "archiver": "^6.0.1", "aws-sdk": "^2.1488.0", "bootstrap": "^5.3.2", "c3": "^0.7.20", @@ -53,8 +54,10 @@ "devDependencies": { "@electron-forge/cli": "^6.4.2", "@electron-forge/plugin-webpack": "^6.4.2", + "@electron-forge/shared-types": "^7.2.0", "@fortawesome/fontawesome-free": "^6.4.2", "@svgr/webpack": "^8.1.0", + "@timfish/forge-externals-plugin": "^0.2.1", "@types/c3": "^0.7.10", "@types/d3": "^7.4.2", "@types/diff-match-patch": "^1.0.35", @@ -69,9 +72,8 @@ "@typescript-eslint/parser": "^6.9.1", "@vercel/webpack-asset-relocator-loader": "^1.7.3", "css-loader": "^6.8.1", - "electron": "^27.0.3", - "electron-builder": "^24.6.4", - "electron-packager": "^17.1.2", + "electron": "^28.1.0", + "electron-builder": "^24.9.1", "eslint": "^8.53.0", "eslint-plugin-css-import-order": "^1.1.0", "eslint-plugin-import": "^2.29.0", @@ -2138,6 +2140,20 @@ "node": ">= 14.17.5" } }, + "node_modules/@electron-forge/cli/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, "node_modules/@electron-forge/core": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-6.4.2.tgz", @@ -2214,6 +2230,34 @@ "node": ">= 14.17.5" } }, + "node_modules/@electron-forge/core-utils/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/core/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, "node_modules/@electron-forge/maker-base": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-6.4.2.tgz", @@ -2228,6 +2272,20 @@ "node": ">= 14.17.5" } }, + "node_modules/@electron-forge/maker-base/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, "node_modules/@electron-forge/plugin-base": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-6.4.2.tgz", @@ -2240,6 +2298,20 @@ "node": ">= 14.17.5" } }, + "node_modules/@electron-forge/plugin-base/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, "node_modules/@electron-forge/plugin-webpack": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@electron-forge/plugin-webpack/-/plugin-webpack-6.4.2.tgz", @@ -2262,6 +2334,20 @@ "node": ">= 14.17.5" } }, + "node_modules/@electron-forge/plugin-webpack/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, "node_modules/@electron-forge/publisher-base": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-6.4.2.tgz", @@ -2274,7 +2360,7 @@ "node": ">= 14.17.5" } }, - "node_modules/@electron-forge/shared-types": { + "node_modules/@electron-forge/publisher-base/node_modules/@electron-forge/shared-types": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", @@ -2288,6 +2374,21 @@ "node": ">= 14.17.5" } }, + "node_modules/@electron-forge/shared-types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.2.0.tgz", + "integrity": "sha512-d8i+pwPwBnlmFTRkq7QfaoRS9LywfyjDdHqQZuArFbL6NLAEbZ52irFiAE3NSLf4STew/BA6IK9sTPz3KRmvQw==", + "dev": true, + "dependencies": { + "@electron-forge/tracer": "7.2.0", + "@electron/packager": "^18.0.0", + "@electron/rebuild": "^3.2.10", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 16.4.0" + } + }, "node_modules/@electron-forge/template-base": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-6.4.2.tgz", @@ -2304,6 +2405,20 @@ "node": ">= 14.17.5" } }, + "node_modules/@electron-forge/template-base/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, "node_modules/@electron-forge/template-vite": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-6.4.2.tgz", @@ -2332,6 +2447,34 @@ "node": "^14.18.0 || >=16.0.0" } }, + "node_modules/@electron-forge/template-vite-typescript/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-vite/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, "node_modules/@electron-forge/template-webpack": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-6.4.2.tgz", @@ -2360,6 +2503,46 @@ "node": ">= 14.17.5" } }, + "node_modules/@electron-forge/template-webpack-typescript/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-webpack/node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/tracer": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.2.0.tgz", + "integrity": "sha512-EoJ07nptEuuY2fcs/bUWzIf11RQRx6Ch/dZ6A9WIRcFYe9cFrslQwvyUf0siY3jcqVvxETCz69JGuBxKGwak7A==", + "dev": true, + "dependencies": { + "chrome-trace-event": "^1.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, "node_modules/@electron-forge/web-multi-logger": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@electron-forge/web-multi-logger/-/web-multi-logger-6.4.2.tgz", @@ -2461,56 +2644,262 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">= 4.0.0" + } + }, + "node_modules/@electron/notarize": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.3.tgz", + "integrity": "sha512-9oRzT56rKh5bspk3KpAVF8lPKHYQrBnRwcgiOeR0hdilVEQmszDaAu0IPCPrwwzJN0ugNs0rRboTreHMt/6mBQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/osx-sign": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", + "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", + "dev": true, + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/packager": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.1.3.tgz", + "integrity": "sha512-21T5MxUf7DwV07IIes3jO/571mXCjOGVPdmYJFPCVDTimFiHQSW0Oy+OIGQaKBiNIXfnP29KylsCQbmds6O6Iw==", + "dev": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "@electron/get": "^3.0.0", + "@electron/notarize": "^2.1.0", + "@electron/osx-sign": "^1.0.5", + "@electron/universal": "^2.0.1", + "@electron/windows-sign": "^1.0.0", + "cross-spawn-windows-exe": "^1.2.0", + "debug": "^4.0.1", + "extract-zip": "^2.0.0", + "filenamify": "^4.1.0", + "fs-extra": "^11.1.0", + "galactus": "^1.0.0", + "get-package-info": "^1.0.0", + "junk": "^3.1.0", + "parse-author": "^2.0.0", + "plist": "^3.0.0", + "rcedit": "^4.0.0", + "resolve": "^1.1.6", + "semver": "^7.1.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "electron-packager": "bin/electron-packager.js" + }, + "engines": { + "node": ">= 16.13.0" + }, + "funding": { + "url": "https://github.com/electron/packager?sponsor=1" + } + }, + "node_modules/@electron/packager/node_modules/@electron/get": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-3.0.0.tgz", + "integrity": "sha512-hLv4BYFiyrNRI+U0Mm2X7RxCCdJLkDUn8GCEp9QJzbLpZRko+UaLlCjOMkj6TEtirNLPyBA7y1SeGfnpOB21aQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/packager/node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@electron/packager/node_modules/@electron/get/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/packager/node_modules/@electron/get/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@electron/packager/node_modules/@electron/get/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@electron/packager/node_modules/@electron/notarize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.2.0.tgz", + "integrity": "sha512-Sf7RG47rafeGuUm+kLEbTXMN8XZeYXN70dMBstrcgiykxCq3SLl1uqxFWndxSI1LfMqv4Eq9PTDHLPwiya31Kg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/packager/node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/packager/node_modules/@electron/universal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.1.tgz", + "integrity": "sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==", + "dev": true, + "dependencies": { + "@electron/asar": "^3.2.7", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "dir-compare": "^4.2.0", + "fs-extra": "^11.1.1", + "minimatch": "^9.0.3", + "plist": "^3.1.0" + }, + "engines": { + "node": ">=16.4" } }, - "node_modules/@electron/notarize": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.3.tgz", - "integrity": "sha512-9oRzT56rKh5bspk3KpAVF8lPKHYQrBnRwcgiOeR0hdilVEQmszDaAu0IPCPrwwzJN0ugNs0rRboTreHMt/6mBQ==", + "node_modules/@electron/packager/node_modules/@electron/universal/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^9.0.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 10.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@electron/notarize/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/@electron/packager/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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@electron/packager/node_modules/dir-compare": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", + "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.5", + "p-limit": "^3.1.0 " + } + }, + "node_modules/@electron/packager/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.14" } }, - "node_modules/@electron/osx-sign": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", - "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", + "node_modules/@electron/packager/node_modules/rcedit": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-4.0.1.tgz", + "integrity": "sha512-bZdaQi34krFWhrDn+O53ccBDw0MkAT2Vhu75SqhtvhQu4OPyFM4RoVheyYiVQYdjhUi6EJMVWQ0tR6bCIYVkUg==", "dev": true, "dependencies": { - "compare-version": "^0.1.2", - "debug": "^4.3.4", - "fs-extra": "^10.0.0", - "isbinaryfile": "^4.0.8", - "minimist": "^1.2.6", - "plist": "^3.0.5" - }, - "bin": { - "electron-osx-flat": "bin/electron-osx-flat.js", - "electron-osx-sign": "bin/electron-osx-sign.js" + "cross-spawn-windows-exe": "^1.1.0" }, "engines": { - "node": ">=12.0.0" + "node": ">= 14.0.0" } }, "node_modules/@electron/rebuild": { @@ -2595,6 +2984,37 @@ "node": ">=10" } }, + "node_modules/@electron/windows-sign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.0.0.tgz", + "integrity": "sha512-sdkQYAR/TQCEyYgz2jMbusL/ljdj6qA7vyIm/S9HICMAitXhXROFHUOLLgiORj1uiaf2EOB2U33DatGubUuZaQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@electron/windows-sign/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@emotion/babel-plugin": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", @@ -2938,6 +3358,102 @@ "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -3688,6 +4204,16 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -4123,6 +4649,60 @@ "node": ">=10" } }, + "node_modules/@timfish/forge-externals-plugin": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@timfish/forge-externals-plugin/-/forge-externals-plugin-0.2.1.tgz", + "integrity": "sha512-80TVZM4n/8x2zxT+SowyHJEzzQR0KLfmZpHg5UX2JnwR1WRa1h03Y7TUvV7PYD4P9/h3r+LcBZy6a7EsDwMtPg==", + "dev": true, + "dependencies": { + "flora-colossus": "1.0.1" + } + }, + "node_modules/@timfish/forge-externals-plugin/node_modules/flora-colossus": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.1.tgz", + "integrity": "sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^7.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@timfish/forge-externals-plugin/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@timfish/forge-externals-plugin/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@timfish/forge-externals-plugin/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -4997,9 +5577,9 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "node_modules/@types/plist": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.4.tgz", - "integrity": "sha512-pTa9xUFQFM9WJGSWHajYNljD+DbVylE1q9IweK1LBhUYJdJ28YNU8j3KZ4Q1Qw+cSl4+QLLLOVmqNjhhvVO8fA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==", "dev": true, "optional": true, "dependencies": { @@ -5153,9 +5733,9 @@ "integrity": "sha512-xW4qsT4UIYILu+7ZrBnfQdBYniZrMLYYK3wN9M/NdeIHgBN5pZI2/8Q7UfdWIcr5RLJv/OGENsx91JIpUUoC7Q==" }, "node_modules/@types/verror": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.8.tgz", - "integrity": "sha512-YhUhnxRYs/NiVUbIs3F/EzviDP/NZCEAE2Mx5DUqLdldUmphOhFCVh7Kc+7zlYEExM0P8dzfbJi0yRlNb2Bw5g==", + "version": "1.10.9", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.9.tgz", + "integrity": "sha512-MLx9Z+9lGzwEuW16ubGeNkpBDE84RpB/NyGgg6z2BTpWzKkGU451cAY3UkUzZEp72RHF585oJ3V8JVNqIplcAQ==", "dev": true, "optional": true }, @@ -5533,6 +6113,15 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -5544,9 +6133,9 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/7zip-bin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", - "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", + "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", "dev": true }, "node_modules/abab": { @@ -5825,9 +6414,9 @@ "dev": true }, "node_modules/app-builder-lib": { - "version": "24.6.4", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz", - "integrity": "sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg==", + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.9.1.tgz", + "integrity": "sha512-Q1nYxZcio4r+W72cnIRVYofEAyjBd3mG47o+zms8HlD51zWtA/YxJb01Jei5F+jkWhge/PTQK+uldsPh6d0/4g==", "dev": true, "dependencies": { "@develar/schema-utils": "~2.6.5", @@ -5836,15 +6425,15 @@ "@electron/universal": "1.4.1", "@malept/flatpak-bundler": "^0.4.0", "@types/fs-extra": "9.0.13", - "7zip-bin": "~5.1.1", + "7zip-bin": "~5.2.0", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "24.5.0", - "builder-util-runtime": "9.2.1", + "builder-util": "24.8.1", + "builder-util-runtime": "9.2.3", "chromium-pickle-js": "^0.2.0", "debug": "^4.3.4", "ejs": "^3.1.8", - "electron-publish": "24.5.0", + "electron-publish": "24.8.1", "form-data": "^4.0.0", "fs-extra": "^10.1.0", "hosted-git-info": "^4.1.0", @@ -5983,20 +6572,90 @@ "node": ">=10" } }, - "node_modules/app-builder-lib/node_modules/minimatch/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, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, + "node_modules/app-builder-lib/node_modules/minimatch/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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/archiver": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.1.tgz", + "integrity": "sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==", + "dependencies": { + "archiver-utils": "^4.0.1", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^5.0.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/archiver-utils": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz", + "integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==", + "dependencies": { + "glob": "^8.0.0", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/archiver-utils/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==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/are-we-there-yet": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", @@ -6166,8 +6825,7 @@ "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/async-exit-hook": { "version": "2.0.1", @@ -6269,6 +6927,11 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -6708,7 +7371,6 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, "engines": { "node": "*" } @@ -6731,16 +7393,16 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/builder-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.5.0.tgz", - "integrity": "sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ==", + "version": "24.8.1", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.8.1.tgz", + "integrity": "sha512-ibmQ4BnnqCnJTNrdmdNlnhF48kfqhNzSeqFMXHLIl+o9/yhn6QfOaVrloZ9YUu3m0k3rexvlT5wcki6LWpjTZw==", "dev": true, "dependencies": { "@types/debug": "^4.1.6", - "7zip-bin": "~5.1.1", + "7zip-bin": "~5.2.0", "app-builder-bin": "4.0.0", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.2.1", + "builder-util-runtime": "9.2.3", "chalk": "^4.1.2", "cross-spawn": "^7.0.3", "debug": "^4.3.4", @@ -6755,9 +7417,9 @@ } }, "node_modules/builder-util-runtime": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz", - "integrity": "sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA==", + "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==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -7284,6 +7946,20 @@ "node": ">=0.10.0" } }, + "node_modules/compress-commons": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.1.tgz", + "integrity": "sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^5.0.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -7355,26 +8031,81 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/config-file-ts": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.4.tgz", - "integrity": "sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.6.tgz", + "integrity": "sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==", "dev": true, "dependencies": { - "glob": "^7.1.6", - "typescript": "^4.0.2" + "glob": "^10.3.10", + "typescript": "^5.3.3" + } + }, + "node_modules/config-file-ts/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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/config-file-ts/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/config-file-ts/node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/connect-history-api-fallback": { @@ -7448,8 +8179,7 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/cosmiconfig": { "version": "7.1.0", @@ -7476,6 +8206,29 @@ "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==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.0.tgz", + "integrity": "sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -8334,14 +9087,14 @@ } }, "node_modules/dmg-builder": { - "version": "24.6.4", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz", - "integrity": "sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw==", + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.9.1.tgz", + "integrity": "sha512-huC+O6hvHd24Ubj3cy2GMiGLe2xGFKN3klqVMLAdcbB6SWMd1yPSdZvV8W1O01ICzCCRlZDHiv4VrNUgnPUfbQ==", "dev": true, "dependencies": { - "app-builder-lib": "24.6.4", - "builder-util": "24.5.0", - "builder-util-runtime": "9.2.1", + "app-builder-lib": "24.9.1", + "builder-util": "24.8.1", + "builder-util-runtime": "9.2.3", "fs-extra": "^10.1.0", "iconv-lite": "^0.6.2", "js-yaml": "^4.1.0" @@ -8542,6 +9295,12 @@ "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -8564,9 +9323,9 @@ } }, "node_modules/electron": { - "version": "27.0.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-27.0.3.tgz", - "integrity": "sha512-VaB9cI1se+mUtz366NP+zxFVnkHLbCBNO4wwouw3FuGyX/m7/Bv1I89JhWOBv78tC+n11ZYMrVD23Jf6EZgVcg==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-28.1.0.tgz", + "integrity": "sha512-82Y7o4PSWPn1o/aVwYPsgmBw6Gyf2lVHpaBu3Ef8LrLWXxytg7ZRZr/RtDqEMOzQp3+mcuy3huH84MyjdmP50Q==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -8582,16 +9341,16 @@ } }, "node_modules/electron-builder": { - "version": "24.6.4", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz", - "integrity": "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==", + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.9.1.tgz", + "integrity": "sha512-v7BuakDuY6sKMUYM8mfQGrwyjBpZ/ObaqnenU0H+igEL10nc6ht049rsCw2HghRBdEwJxGIBuzs3jbEhNaMDmg==", "dev": true, "dependencies": { - "app-builder-lib": "24.6.4", - "builder-util": "24.5.0", - "builder-util-runtime": "9.2.1", + "app-builder-lib": "24.9.1", + "builder-util": "24.8.1", + "builder-util-runtime": "9.2.3", "chalk": "^4.1.2", - "dmg-builder": "24.6.4", + "dmg-builder": "24.9.1", "fs-extra": "^10.1.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", @@ -8658,14 +9417,14 @@ } }, "node_modules/electron-publish": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.5.0.tgz", - "integrity": "sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA==", + "version": "24.8.1", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.8.1.tgz", + "integrity": "sha512-IFNXkdxMVzUdweoLJNXSupXkqnvgbrn3J4vognuOY06LaS/m0xvfFYIf+o1CM8if6DuWYWoQFKPcWZt/FUjZPw==", "dev": true, "dependencies": { "@types/fs-extra": "^9.0.11", - "builder-util": "24.5.0", - "builder-util-runtime": "9.2.1", + "builder-util": "24.8.1", + "builder-util-runtime": "9.2.3", "chalk": "^4.1.2", "fs-extra": "^10.1.0", "lazy-val": "^1.0.5", @@ -8719,6 +9478,11 @@ "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -9508,6 +10272,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -9859,6 +10628,34 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.0.2.tgz", @@ -11559,6 +12356,24 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -12456,6 +13271,49 @@ "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", "dev": true }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -13421,7 +14279,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -13913,6 +14770,40 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -14048,16 +14939,17 @@ } }, "node_modules/plist": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", - "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", "dev": true, "dependencies": { + "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" }, "engines": { - "node": ">=6" + "node": ">=10.4.0" } }, "node_modules/postcss": { @@ -14219,8 +15111,7 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/progress": { "version": "2.0.3", @@ -14401,6 +15292,11 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -14919,6 +15815,33 @@ "node": ">= 6" } }, + "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==", + "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==", + "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==", + "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", @@ -16348,6 +17271,15 @@ "node": ">= 0.8" } }, + "node_modules/streamx": { + "version": "2.15.6", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", + "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -16382,10 +17314,20 @@ "node": ">=8" } }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, "node_modules/string.prototype.trim": { "version": "1.2.8", @@ -16443,6 +17385,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -16746,6 +17701,16 @@ "node": ">=10" } }, + "node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/tar/node_modules/minipass": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", @@ -18253,6 +19218,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -18526,6 +19509,19 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zip-stream": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz", + "integrity": "sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==", + "dependencies": { + "archiver-utils": "^4.0.1", + "compress-commons": "^5.0.1", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 12.0.0" + } } } } diff --git a/package-utils.js b/package-utils.js new file mode 100644 index 00000000..9f591c87 --- /dev/null +++ b/package-utils.js @@ -0,0 +1,58 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const fs = require("fs"); +const path = require("path"); +const archiver = require("archiver"); + +/** + * @param {string[]} metaDataFiles + * @param {string} packagePath + */ +function addMetaDataFilesToPackage(packagePath, metaDataFiles) { + metaDataFiles.forEach((file) => + fs.copyFileSync(file, `${packagePath}/${file}`) + ); + console.log( + `Added ${metaDataFiles.length} metadata files to Packaged app at ${packagePath}` + ); +} + +/** + * @param {string} packagePath + * @param {string} archiveDirectory + */ +function buildPackageArchive(packagePath, archiveDirectory) { + // Get the base name of the package directory + const packageName = path.basename(packagePath); + + // Determine the packaging format based on the OS + const isWindows = process.platform === "win32"; + const archiveFormat = isWindows ? "zip" : "tar"; + const archiveExtension = isWindows ? "zip" : "tar.gz"; + + console.log("Building release archive ..."); + + // Ensure that the archive destination directory exists + if (!fs.existsSync(archiveDirectory)) { + fs.mkdirSync(archiveDirectory); + } + + // Create the archive file with the same name as the package directory + const archiveFileName = `${packageName}.${archiveExtension}`; + const archiveFilePath = path.join(archiveDirectory, archiveFileName); + const output = fs.createWriteStream(archiveFilePath); + const archive = archiver(archiveFormat, { gzip: true }); + + output.on("close", () => { + console.log(`Created release archive at ${archiveFilePath}`); + }); + + archive.pipe(output); + archive.directory(packagePath, false); + archive.finalize(); +} + + +module.exports = { + addMetaDataFilesToPackage, + buildPackageArchive, +}; diff --git a/package.json b/package.json index 93b69267..e2cb0b88 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "scancode-workbench", "productName": "scancode-workbench", - "version": "4.0.0", + "version": "4.0.1", "description": "An application for viewing ScanCode results and concluding component origin and license", "repository": { "type": "git", @@ -21,8 +21,8 @@ "scripts": { "start": "electron-forge start", "postinstall": "electron-builder install-app-deps", - "publish": "electron-forge package && node packager.js && npm run create-archive", - "create-archive": "python archive_builder.py", + "publish": "electron-forge package", + "srcarchive": "node buildSourceArchive.js", "lint": "eslint --ext .ts,.tsx .", "test": "jest", "test:watch": "jest --watch", @@ -32,8 +32,10 @@ "devDependencies": { "@electron-forge/cli": "^6.4.2", "@electron-forge/plugin-webpack": "^6.4.2", + "@electron-forge/shared-types": "^7.2.0", "@fortawesome/fontawesome-free": "^6.4.2", "@svgr/webpack": "^8.1.0", + "@timfish/forge-externals-plugin": "^0.2.1", "@types/c3": "^0.7.10", "@types/d3": "^7.4.2", "@types/diff-match-patch": "^1.0.35", @@ -48,17 +50,16 @@ "@typescript-eslint/parser": "^6.9.1", "@vercel/webpack-asset-relocator-loader": "^1.7.3", "css-loader": "^6.8.1", - "electron": "^27.0.3", - "electron-builder": "^24.6.4", - "electron-packager": "^17.1.2", + "electron": "^28.1.0", + "electron-builder": "^24.9.1", "eslint": "^8.53.0", "eslint-plugin-css-import-order": "^1.1.0", "eslint-plugin-import": "^2.29.0", "fork-ts-checker-webpack-plugin": "^9.0.2", "husky": "^8.0.3", "jest": "^29.7.0", - "node-loader": "^2.0.0", "jest-environment-jsdom": "^29.7.0", + "node-loader": "^2.0.0", "style-loader": "^3.3.3", "ts-jest": "^29.1.1", "ts-loader": "^9.5.0", @@ -75,6 +76,7 @@ "ag-grid-community": "^30.2.1", "ag-grid-react": "^30.2.1", "allotment": "^1.19.3", + "archiver": "^6.0.1", "aws-sdk": "^2.1488.0", "bootstrap": "^5.3.2", "c3": "^0.7.20", @@ -109,29 +111,6 @@ "d3-color": "3.1.0" }, "config": { - "forge": { - "packagerConfig": { - "name": "ScanCode Workbench", - "icon": "src/assets/app-icon/icon" - }, - "plugins": [ - { - "name": "@electron-forge/plugin-webpack", - "config": { - "mainConfig": "./webpack.main.config.js", - "renderer": { - "config": "./webpack.renderer.config.js", - "entryPoints": [ - { - "html": "./src/index.html", - "js": "./src/renderer.ts", - "name": "main_window" - } - ] - } - } - } - ] - } + "forge": "./forge.config.js" } } diff --git a/packager.js b/packager.js deleted file mode 100644 index 8a13534c..00000000 --- a/packager.js +++ /dev/null @@ -1,51 +0,0 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -const packager = require("electron-packager"); - -const ignoreDir = [ - "src", - "dist", - "samples", - "test-old", - ".github", - "docs", - "test-db", - "", // Required as the last element !! -].join("*|"); -const ignoreFilesOrExtensions = [ - "rst", - "py", - "md", - "txt", - "enc", - ".test.ts", - "ABOUT", - "LICENSE", - "NOTICE", - ".gitignore", - ".eslintrc.json", - "package-lock.json", - "electron-builder.json", - "tsconfig.json", -].join("|"); - -packager({ - dir: ".", - out: "out", // @NOTE - If 'out' dir is changed here, change PACKAGE_DIR in archive_builder too, - overwrite: true, - icon: "src/assets/app-icon/icon", - prune: true, - name: "ScanCode-Workbench", - ignore: new RegExp(`(${ignoreDir}^.*.(${ignoreFilesOrExtensions})$)`), - // osxSign: true, - // osxSign: { - // identity: 'Developer ID Application: Felix Rieseberg (LT94ZKYDCJ)', - // 'hardened-runtime': true, - // entitlements: 'entitlements.plist', - // 'entitlements-inherit': 'entitlements.plist', - // 'signature-flags': 'library' - // }, - // osxNotarize: { - // appleId: 'felix@felix.fun', - // appleIdPassword: 'my-apple-id-password' - // }, -}); diff --git a/src/assets/images/AddFiles.png b/src/assets/images/AddFiles.png deleted file mode 100644 index dac68c1f..00000000 Binary files a/src/assets/images/AddFiles.png and /dev/null differ diff --git a/src/assets/images/Addfiles.png.ABOUT b/src/assets/images/Addfiles.png.ABOUT deleted file mode 100644 index acdef8bb..00000000 --- a/src/assets/images/Addfiles.png.ABOUT +++ /dev/null @@ -1,8 +0,0 @@ -about_resource: AddFiles.png -copyright: Copyright (c) Freepik Company, S.L. -description: Add files Flat Illustrations -download_url: https://storyset.com/illustration/add-files/rafiki -homepage_url: https://storyset.com/ -license: https://storyset.com/terms -name: Storyset work illustration -type: image \ No newline at end of file diff --git a/src/components/ImportFallback/ImportFallback.tsx b/src/components/ImportFallback/ImportFallback.tsx index a1340836..16cb0aff 100644 --- a/src/components/ImportFallback/ImportFallback.tsx +++ b/src/components/ImportFallback/ImportFallback.tsx @@ -1,29 +1,23 @@ import React from "react"; import { Link } from "react-router-dom"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faFileCirclePlus } from "@fortawesome/free-solid-svg-icons"; -import CoreLink from "../CoreLink/CoreLink"; import { ROUTES } from "../../constants/routes"; -import AddFileImage from "../../assets/images/AddFiles.png"; import "./importFallback.css"; const ImportFallback = () => { return (
- - false} /> - -
-

- Please {" "} - import a file {" "} - to view this page -

- -
- - Work illustrations by Storyset - +
+ + + +

+ Please {" "} + import a scan +

); diff --git a/src/components/ImportFallback/importFallback.css b/src/components/ImportFallback/importFallback.css index 52577706..31d9e1d4 100644 --- a/src/components/ImportFallback/importFallback.css +++ b/src/components/ImportFallback/importFallback.css @@ -1,24 +1,17 @@ .import-fallback { text-align: center; + display: flex; + justify-content: center; + align-items: center; + height: 100%; } .import-fallback a { text-decoration: none; } -.import-fallback img { - width: 90%; - max-width: 700px; - user-select: none; - -moz-user-select: none; - -webkit-user-drag: none; - -webkit-user-select: none; - -ms-user-select: none; -} - -.import-fallback .credits { - position: absolute; - right: 0; - bottom: 0; - margin: 15px; +.import-fallback .fallback-icon { + font-size: 250px; + line-height: normal; + margin: 0; } \ No newline at end of file diff --git a/src/pages/TableView/CustomCellRenderers/Licenses/DetectionOriginRenderer.tsx.tsx b/src/pages/TableView/CustomCellRenderers/Licenses/DetectionOriginRenderer.tsx similarity index 100% rename from src/pages/TableView/CustomCellRenderers/Licenses/DetectionOriginRenderer.tsx.tsx rename to src/pages/TableView/CustomCellRenderers/Licenses/DetectionOriginRenderer.tsx diff --git a/src/pages/TableView/CustomCellRenderers/ListCellRenderer.tsx b/src/pages/TableView/CustomCellRenderers/ListCellRenderer.tsx index 0a23f684..1afffada 100644 --- a/src/pages/TableView/CustomCellRenderers/ListCellRenderer.tsx +++ b/src/pages/TableView/CustomCellRenderers/ListCellRenderer.tsx @@ -32,7 +32,7 @@ const ListCellRenderer = (props: ListCellRendererProps) => { {Array.isArray(subValues) ? subValues.map((value, j) => ( - {value}
+ {value}
)) : subValues} diff --git a/src/pages/TableView/CustomCellRenderers/index.tsx b/src/pages/TableView/CustomCellRenderers/index.tsx index 5b9bcd08..0f669194 100644 --- a/src/pages/TableView/CustomCellRenderers/index.tsx +++ b/src/pages/TableView/CustomCellRenderers/index.tsx @@ -1,7 +1,7 @@ import FileLicenseDetectionsRenderer from "./Licenses/FileLicenseDetectionsRenderer"; import FileLicenseCluesRenderer from "./Licenses/FileLicenseCluesRenderer"; import FilePathRenderer from "./Licenses/FilePathRenderer"; -import DetectionOriginRenderer from "./Licenses/DetectionOriginRenderer.tsx"; +import DetectionOriginRenderer from "./Licenses/DetectionOriginRenderer"; import RegionLinesRenderer from "./Licenses/RegionLinesRenderer"; import ListCellRenderer from "./ListCellRenderer"; import UrlListCellRenderer from "./UrlListCellRenderer"; diff --git a/src/pages/TableView/columnDefs.ts b/src/pages/TableView/columnDefs.ts index 1f713ed2..3a313b61 100644 --- a/src/pages/TableView/columnDefs.ts +++ b/src/pages/TableView/columnDefs.ts @@ -129,7 +129,7 @@ export const ALL_COLUMNS: COLUMNS_LIST = { size: { field: "size", colId: "size", - headerName: "File Size", + headerName: "Size", initialWidth: 110, }, mime_type: { @@ -210,9 +210,7 @@ export const ALL_COLUMNS: COLUMNS_LIST = { initialWidth: 320, cellRenderer: CustomComponentKeys.ListCellRenderer, filterParams: { - filterOptions: { - ...FILTER_OPTIONS.LIST_FILTERS, - }, + filterOptions: FILTER_OPTIONS.LIST_FILTERS, }, }, copyright_authors: { diff --git a/webpack.rules.js b/webpack.rules.js index d8789fb5..93cb4589 100644 --- a/webpack.rules.js +++ b/webpack.rules.js @@ -32,7 +32,6 @@ module.exports = [ }, }, }, - { test: /\.tsx?$/, exclude: /(node_modules|\.webpack)/, diff --git a/workbench.ABOUT b/workbench.ABOUT index 2cc72ea3..500fd53a 100644 --- a/workbench.ABOUT +++ b/workbench.ABOUT @@ -1,10 +1,10 @@ -about_resource: scancode-workbench +about_resource: . name: ScanCode Workbench -version: 4.0.0 +license_expression: apache-2.0 +copyright: Copyright (c) nexB Inc. and others. +homepage_url: https://www.aboutcode.org/ license: apache-2.0 owner: nexB Inc. -copyright: Copyright (c) nexB Inc. and others. All rights reserved. - notice_file: NOTICE -license_file: LICENSE -notes: ScanCode Workbench is licensed under Apache 2.0. Some example code from electron-quickstart is used and is licensed under CC0-1.0. +vcs_url: git+https://github.com/nexB/scancode-workbench +bug_tracking_url: https://github.com/nexB/scancode-workbench/issues