diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 9f2ebe0..3066937 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -23,14 +23,14 @@ jobs: show-progress: false - name: 📦 Setup PNPM - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 with: version: 11 - name: ⎔ Setup Node.js uses: actions/setup-node@v6 with: - node-version: lts/* + node-version-file: .node-version cache: pnpm - name: 📥 Download dependencies diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e9d8806..1b2fa53 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,12 +3,6 @@ name: Release Events on: release: types: [published] - workflow_dispatch: - inputs: - environment: - description: "Environment to run tests against" - type: environment - required: true permissions: id-token: write @@ -17,6 +11,7 @@ permissions: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BUILD_IDENTIFIER: ${{ github.event.release.prerelease && 'beta' || 'prod' }} jobs: deploy-macos: @@ -31,14 +26,14 @@ jobs: show-progress: false - name: 📦 Setup PNPM - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 with: version: 11 - name: ⎔ Set up Node.js uses: actions/setup-node@v6 with: - node-version: lts/* + node-version-file: .node-version cache: pnpm - name: 🐍 Set up python @@ -55,13 +50,12 @@ jobs: - name: 💻 Set up app DMG run: | python3 -m pip install setuptools - pnpm add --global appdmg@0.6.6 - name: 📥 Install dependencies run: pnpm install --frozen-lockfile - - name: 🚀 Build, Package, & Release - run: pnpm run publish --arch=universal + - name: 🚀 Build macOS distributables + run: pnpm make --arch=universal env: NODE_ENV: production APPLE_IDENTITY: ${{ secrets.APPLE_IDENTITY }} @@ -70,9 +64,15 @@ jobs: APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} GCP_KEYRING_PATH: ${{ secrets.GCP_KEYRING_PATH }} GCP_KEY_NAME: ${{ secrets.GCP_KEY_NAME }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VITE_IS_BETA: ${{ github.event.release.prerelease == true }} + - name: ⬆️ Upload macOS distributables + uses: actions/upload-artifact@v7 + with: + name: macos-release-assets + path: out/${{ env.BUILD_IDENTIFIER }}/make/ + if-no-files-found: error + deploy-windows: name: Publish windows app runs-on: windows-latest @@ -85,14 +85,14 @@ jobs: show-progress: false - name: 📦 Setup PNPM - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v6 with: version: 11 - name: ⎔ Set up Node.js uses: actions/setup-node@v6 with: - node-version: lts/* + node-version-file: .node-version cache: pnpm - name: 📥 Install dependencies @@ -121,19 +121,52 @@ jobs: service_account: ${{ secrets.SERVICE_ACCOUNT_EMAIL }} create_credentials_file: true - - name: 🚀 Build, Package, & Release - run: pnpm run publish + - name: 🚀 Build Windows distributables + run: pnpm run make env: NODE_ENV: production GCP_KEYRING_PATH: ${{ secrets.GCP_KEYRING_PATH }} GCP_KEY_NAME: ${{ secrets.GCP_KEY_NAME }} GOOGLE_APPLICATION_CREDENTIALS: ${{ steps.auth.outputs.credentials_file_path }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VITE_IS_BETA: ${{ github.event.release.prerelease == true }} + - name: ⬆️ Upload Windows distributables + uses: actions/upload-artifact@v7 + with: + name: windows-release-assets + path: out/${{ env.BUILD_IDENTIFIER }}/make/ + if-no-files-found: error + + upload-release-assets: + name: Attach release assets + needs: [deploy-macos, deploy-windows] + runs-on: ubuntu-latest + steps: + - name: ⬇️ Download macOS distributables + uses: actions/download-artifact@v8 + with: + name: macos-release-assets + path: release-assets/macos + + - name: ⬇️ Download Windows distributables + uses: actions/download-artifact@v8 + with: + name: windows-release-assets + path: release-assets/windows + + - name: 🚀 Attach distributables to release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + RELEASE_TAG: ${{ github.event.release.tag_name }} + run: | + find release-assets -type f -print0 | while IFS= read -r -d '' file; do + gh release upload "$RELEASE_TAG" "$file" --clobber + done + change-management: name: Change management - needs: [deploy-macos, deploy-windows] + needs: [deploy-macos, deploy-windows, upload-release-assets] runs-on: ubuntu-latest permissions: contents: read diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..f5b3ef3 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +22.21.0 \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 3663365..18994a5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,6 +15,7 @@ "Centerlines", "clsx", "CODESIGN", + "distributables", "draganddrop", "Dropzone", "fulladd", @@ -36,6 +37,7 @@ "postcss", "pwsh", "relocator", + "runneradmin", "Sectigo", "semibold", "setuptools", diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d071cb..e581936 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,72 @@ # Changelog +## [1.7.14-rc.8](https://github.com/agrc/api-client/compare/v1.7.14-rc.7...v1.7.14-rc.8) (2026-06-24) + + +### Bug Fixes + +* add env var to help gh cli know which repo to target ([4b53dae](https://github.com/agrc/api-client/commit/4b53daee918932cf898183dcdfb513dc93b6b5b0)) + +## [1.7.14-rc.7](https://github.com/agrc/api-client/compare/v1.7.14-rc.6...v1.7.14-rc.7) (2026-06-24) + + +### Bug Fixes + +* remove duplicate windows signing ([d8cf04c](https://github.com/agrc/api-client/commit/d8cf04c5c1d5946134f398029bd5b4c25f4c6c8f)) + +## [1.7.14-rc.6](https://github.com/agrc/api-client/compare/v1.7.14-rc.5...v1.7.14-rc.6) (2026-06-24) + + +### Bug Fixes + +* prevent dmg mount name from exceeding the 27 character limit ([b52e490](https://github.com/agrc/api-client/commit/b52e490fc4ff16b2e63581f2de13b814a9472b7a)) + +## [1.7.14-rc.5](https://github.com/agrc/api-client/compare/v1.7.14-rc.4...v1.7.14-rc.5) (2026-06-24) + + +### Bug Fixes + +* more specific upload path for artifacts ([e242253](https://github.com/agrc/api-client/commit/e242253a30323e1ee48849592b05e5d6c18eaded)) + + +### Dependencies + +* pin to node v22 ([114a8d7](https://github.com/agrc/api-client/commit/114a8d78003f14e8369a828f0be7dc1071665713)) + +## [1.7.14-rc.4](https://github.com/agrc/api-client/compare/v1.7.14-rc.3...v1.7.14-rc.4) (2026-06-22) + + +### Bug Fixes + +* make output path ([51c4fdc](https://github.com/agrc/api-client/commit/51c4fdcd5ea0132bed05a00a02844e76b0636711)) + +## [1.7.14-rc.3](https://github.com/agrc/api-client/compare/v1.7.14-rc.2...v1.7.14-rc.3) (2026-06-22) + + +### Bug Fixes + +* simplify and correct forge config ([b037415](https://github.com/agrc/api-client/commit/b03741579486277aaeef0e617f04a8b1028fb426)) + +## [1.7.14-rc.2](https://github.com/agrc/api-client/compare/v1.7.14-rc.1...v1.7.14-rc.2) (2026-06-22) + + +### Bug Fixes + +* remove unused build package ([22241b7](https://github.com/agrc/api-client/commit/22241b73e02f3bf2f605211bfe43de4f07a1a895)) + +## [1.7.14-rc.1](https://github.com/agrc/api-client/compare/v1.7.13...v1.7.14-rc.1) (2026-06-17) + + +### Bug Fixes + +* PNPM audit ([028510e](https://github.com/agrc/api-client/commit/028510ed6baffe6b5abb3086297f26883d9feb75)) + + +### Dependencies + +* bump NPM dependencies 🌲 ([e0d1e78](https://github.com/agrc/api-client/commit/e0d1e7822239789c2fc63aabb1a66242a0bb8791)) +* bump NPM dependencies 🌲 ([ab217c7](https://github.com/agrc/api-client/commit/ab217c793a21f2bea062925880dadbfcf611a2f9)) + ## [1.7.13](https://github.com/agrc/api-client/compare/v1.7.12...v1.7.13) (2026-02-13) diff --git a/README.md b/README.md index 23f48a0..060277d 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ An apple developer certificate is required to sign the application for distribut ## Deploying a new version -GitHub Actions will create and update a draft release with every merged pull request. When a release is desired, publish the [draft release](https://github.com/agrc/api-client/releases). Another GitHub action will sign the binaries and upload them to the release assets. The API Clients will silently download the update and the installation will occur on the next restart of the app. +This project uses our [standard release action](https://github.com/agrc/release-composite-action) to create draft releases. Publishing a release triggers GitHub Actions to build/sign the distributables and attach them to the release; existing installs will silently download the update and the installation will occur on the next restart of the app. ## Dependency Notes diff --git a/forge.config.ts b/forge.config.ts index 3efa921..1cb7aa9 100644 --- a/forge.config.ts +++ b/forge.config.ts @@ -1,12 +1,11 @@ -import { utils } from '@electron-forge/core'; import { MakerDMG } from '@electron-forge/maker-dmg'; import { MakerSquirrel } from '@electron-forge/maker-squirrel'; import { MakerZIP } from '@electron-forge/maker-zip'; import { FusesPlugin } from '@electron-forge/plugin-fuses'; import { VitePlugin } from '@electron-forge/plugin-vite'; -import { PublisherGithub } from '@electron-forge/publisher-github'; import type { ForgeConfig } from '@electron-forge/shared-types'; import { FuseV1Options, FuseVersion } from '@electron/fuses'; +import type { SignToolOptions } from '@electron/windows-sign'; import dotenv from 'dotenv'; import path from 'path'; import packageJson from './package.json'; @@ -16,8 +15,6 @@ if (process.env.NODE_ENV !== 'production') { dotenv.config(); } -const fromBuildIdentifier = utils.fromBuildIdentifier; - const { version } = packageJson; const assets = path.resolve(__dirname, 'src', 'assets'); const kmsKeyPath = (() => { @@ -41,40 +38,33 @@ const appleId = process.env.APPLE_USER_ID; const appleIdPassword = process.env.APPLE_PASSWORD; const appleTeamId = process.env.APPLE_TEAM_ID; -const windowsSign = { - digestAlgorithm: 'sha256', - hashes: ['sha256'], +const windowsSign: SignToolOptions = { + hashes: ['sha256' as NonNullable[number]], certificateFile: certPath, timestampServer: 'http://timestamp.sectigo.com', description: 'UGRC API Client', website: 'https://gis.utah.gov/products/sgid/address/api-client/', signWithParams: ['/v', '/csp', 'Google Cloud KMS Provider', '/kc', kmsKeyPath], }; +const isBeta = process.env.VITE_IS_BETA === 'true'; +const productName = isBeta ? 'UGRC API Client Beta' : 'UGRC API Client'; +const isUniversalArch = process.argv.includes('--arch=universal') || process.env.npm_config_arch === 'universal'; +const shouldSkipFusesForUniversal = + process.platform === 'darwin' && isUniversalArch && process.env.NODE_ENV !== 'production'; const config: ForgeConfig = { - buildIdentifier: process.env.VITE_IS_BETA === 'true' ? 'beta' : 'prod', + buildIdentifier: isBeta ? 'beta' : 'prod', packagerConfig: { - // @ts-expect-error expect string - name: fromBuildIdentifier({ - beta: 'UGRC API Client Beta', - prod: 'UGRC API Client', - }), + name: productName, executableName: 'ugrc-api-client', asar: true, icon: path.resolve(assets, 'logo.icns'), - // @ts-expect-error expect string - appBundleId: fromBuildIdentifier({ - beta: 'com.beta.electron.ugrc-api-client', - prod: 'com.electron.ugrc-api-client', - }), + appBundleId: isBeta ? 'com.beta.electron.ugrc-api-client' : 'com.electron.ugrc-api-client', appCategoryType: 'public.app-category.developer-tools', win32metadata: { CompanyName: 'UGRC', - OriginalFilename: 'UGRC API Client', + OriginalFilename: productName, }, - // Enable Windows signing only in production; cast to avoid dependency version typing drift - // eslint-disable-next-line @typescript-eslint/no-explicit-any - windowsSign: process.env.NODE_ENV !== 'production' ? undefined : (windowsSign as any), osxSign: process.env.NODE_ENV !== 'production' ? undefined @@ -107,19 +97,11 @@ const config: ForgeConfig = { noMsi: true, setupExe: `ugrc-api-client-${version}-win32-setup.exe`, setupIcon: path.resolve(assets, 'logo.ico'), - windowsSign: { - // @ts-expect-error matches enum value - hashes: ['sha256'], - certificateFile: certPath, - timestampServer: 'http://timestamp.sectigo.com', - description: 'UGRC API Client', - website: 'https://gis.utah.gov/products/sgid/address/api-client/', - signWithParams: ['/v', '/csp', 'Google Cloud KMS Provider', '/kc', kmsKeyPath], - }, + windowsSign, }), new MakerZIP({}, ['darwin']), new MakerDMG({ - title: '${productName} ${version}', + title: productName, additionalDMGOptions: { window: { size: { @@ -149,19 +131,6 @@ const config: ForgeConfig = { }, }), ], - publishers: [ - new PublisherGithub({ - repository: { - owner: 'agrc', - name: 'api-client', - }, - draft: true, - prerelease: !!fromBuildIdentifier({ - beta: true, - prod: false, - }), - }), - ], plugins: [ new VitePlugin({ // `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc. @@ -186,17 +155,21 @@ const config: ForgeConfig = { }, ], }), - // Fuses are used to enable/disable various Electron functionality - // at package time, before code signing the application - new FusesPlugin({ - version: FuseVersion.V1, - [FuseV1Options.RunAsNode]: false, - [FuseV1Options.EnableCookieEncryption]: true, - [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, - [FuseV1Options.EnableNodeCliInspectArguments]: false, - [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, - [FuseV1Options.OnlyLoadAppFromAsar]: true, - }), + ...(shouldSkipFusesForUniversal + ? [] + : [ + // Fuses are used to enable/disable various Electron functionality + // at package time, before code signing the application + new FusesPlugin({ + version: FuseVersion.V1, + [FuseV1Options.RunAsNode]: false, + [FuseV1Options.EnableCookieEncryption]: true, + [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, + [FuseV1Options.EnableNodeCliInspectArguments]: false, + [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, + [FuseV1Options.OnlyLoadAppFromAsar]: true, + }), + ]), ], }; diff --git a/package.json b/package.json index df9c15b..ebf3682 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ugrc-api-client", - "version": "1.7.13", + "version": "1.7.14-rc.8", "description": "The official UGRC API client", "keywords": [ "utah", @@ -33,7 +33,6 @@ "lint": "eslint . --report-unused-disable-directives --max-warnings 0", "make": "electron-forge make", "package": "electron-forge package", - "publish": "electron-forge publish", "start": "cross-env ELECTRON_ENABLE_LOGGING=1 electron-forge start" }, "dependencies": { @@ -70,7 +69,6 @@ "@electron-forge/plugin-auto-unpack-natives": "^7.11.2", "@electron-forge/plugin-fuses": "^7.11.2", "@electron-forge/plugin-vite": "^7.11.2", - "@electron-forge/publisher-github": "^7.11.2", "@electron/fuses": "~2.1.2", "@tailwindcss/postcss": "^4.3.0", "@types/electron-squirrel-startup": "^1.0.2", @@ -84,6 +82,7 @@ "electron-squirrel-startup": "^1.0.1", "eslint": "^9.39.4", "generate-license-file": "^4.2.1", + "lodash": "^4.18.1", "prettier": "^3.8.3", "prettier-plugin-organize-imports": "^4.3.0", "prettier-plugin-packagejson": "^3.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11bfdbb..0789925 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,9 +102,6 @@ importers: '@electron-forge/plugin-vite': specifier: ^7.11.2 version: 7.11.2 - '@electron-forge/publisher-github': - specifier: ^7.11.2 - version: 7.11.2 '@electron/fuses': specifier: ~2.1.2 version: 2.1.2 @@ -144,6 +141,9 @@ importers: generate-license-file: specifier: ^4.2.1 version: 4.2.1(typescript@6.0.3) + lodash: + specifier: ^4.18.1 + version: 4.18.1 prettier: specifier: ^3.8.3 version: 3.8.3 @@ -338,10 +338,6 @@ packages: resolution: {integrity: sha512-YwK4ZF3+uW7PBEV/ho59NVTriP3fCahskORrztUaFIdG0QP3hqMsfmo01euv98FDsBEW9UXo7/EW8t5jpmYZ0Q==} engines: {node: '>= 16.4.0'} - '@electron-forge/publisher-github@7.11.2': - resolution: {integrity: sha512-1kandHpGPRg2+Lfo6AyI6DtKVMmrc0yyOdJJmo1A7eJO6U8icMGrypSPwOIiTsN6OYJds/vZBzFQ6Vs9rvRsVg==} - engines: {node: '>= 16.4.0'} - '@electron-forge/shared-types@7.11.2': resolution: {integrity: sha512-Tcles7y74xy3jN5dEC+Pt1duJYk4c7W2xu98tjWW8RewmfKD2uHkie6I1I3yifPFZXZ/QfTlaFOOoKIQ9ENZjg==} engines: {node: '>= 16.4.0'} @@ -889,70 +885,6 @@ packages: resolution: {integrity: sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==} engines: {node: ^20.17.0 || >=22.9.0} - '@octokit/auth-token@4.0.0': - resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} - engines: {node: '>= 18'} - - '@octokit/core@5.2.2': - resolution: {integrity: sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==} - engines: {node: '>= 18'} - - '@octokit/endpoint@9.0.6': - resolution: {integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==} - engines: {node: '>= 18'} - - '@octokit/graphql@7.1.1': - resolution: {integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==} - engines: {node: '>= 18'} - - '@octokit/openapi-types@12.11.0': - resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} - - '@octokit/openapi-types@24.2.0': - resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} - - '@octokit/plugin-paginate-rest@11.4.4-cjs.2': - resolution: {integrity: sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/plugin-request-log@4.0.1': - resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1': - resolution: {integrity: sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': ^5 - - '@octokit/plugin-retry@6.1.0': - resolution: {integrity: sha512-WrO3bvq4E1Xh1r2mT9w6SDFg01gFmP81nIG77+p/MqW1JeXXgL++6umim3t6x0Zj5pZm3rXAN+0HEjmmdhIRig==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/request-error@5.1.1': - resolution: {integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==} - engines: {node: '>= 18'} - - '@octokit/request@8.4.1': - resolution: {integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==} - engines: {node: '>= 18'} - - '@octokit/rest@20.1.2': - resolution: {integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==} - engines: {node: '>= 18'} - - '@octokit/types@13.10.0': - resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} - - '@octokit/types@6.41.0': - resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} - '@oxc-project/types@0.133.0': resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==} @@ -1700,9 +1632,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - better-opn@3.0.2: resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} engines: {node: '>=12.0.0'} @@ -1721,9 +1650,6 @@ packages: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - bottleneck@2.19.5: - resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - bplist-creator@0.0.8: resolution: {integrity: sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==} @@ -2057,9 +1983,6 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - deprecation@2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -3313,18 +3236,10 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - mime-db@1.54.0: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -4611,9 +4526,6 @@ packages: resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - universal-user-agent@6.0.1: - resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} - universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -5217,24 +5129,6 @@ snapshots: - bluebird - supports-color - '@electron-forge/publisher-github@7.11.2': - dependencies: - '@electron-forge/publisher-base': 7.11.2 - '@electron-forge/shared-types': 7.11.2 - '@octokit/core': 5.2.2 - '@octokit/plugin-retry': 6.1.0(@octokit/core@5.2.2) - '@octokit/request-error': 5.1.1 - '@octokit/rest': 20.1.2 - '@octokit/types': 6.41.0 - chalk: 4.1.2 - debug: 4.4.3 - fs-extra: 10.1.0 - log-symbols: 4.1.0 - mime-types: 2.1.35 - transitivePeerDependencies: - - bluebird - - supports-color - '@electron-forge/shared-types@7.11.2': dependencies: '@electron-forge/tracer': 7.11.2 @@ -5357,7 +5251,7 @@ snapshots: make-fetch-happen: 10.2.1 nopt: 6.0.0 proc-log: 2.0.1 - semver: 7.8.0 + semver: 7.8.3 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -5884,7 +5778,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.8.0 + semver: 7.8.3 '@npmcli/fs@5.0.0': dependencies: @@ -5960,82 +5854,6 @@ snapshots: node-gyp: 12.3.0 proc-log: 6.1.0 - '@octokit/auth-token@4.0.0': {} - - '@octokit/core@5.2.2': - dependencies: - '@octokit/auth-token': 4.0.0 - '@octokit/graphql': 7.1.1 - '@octokit/request': 8.4.1 - '@octokit/request-error': 5.1.1 - '@octokit/types': 13.10.0 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - - '@octokit/endpoint@9.0.6': - dependencies: - '@octokit/types': 13.10.0 - universal-user-agent: 6.0.1 - - '@octokit/graphql@7.1.1': - dependencies: - '@octokit/request': 8.4.1 - '@octokit/types': 13.10.0 - universal-user-agent: 6.0.1 - - '@octokit/openapi-types@12.11.0': {} - - '@octokit/openapi-types@24.2.0': {} - - '@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.2)': - dependencies: - '@octokit/core': 5.2.2 - '@octokit/types': 13.10.0 - - '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.2)': - dependencies: - '@octokit/core': 5.2.2 - - '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.2)': - dependencies: - '@octokit/core': 5.2.2 - '@octokit/types': 13.10.0 - - '@octokit/plugin-retry@6.1.0(@octokit/core@5.2.2)': - dependencies: - '@octokit/core': 5.2.2 - '@octokit/request-error': 5.1.1 - '@octokit/types': 13.10.0 - bottleneck: 2.19.5 - - '@octokit/request-error@5.1.1': - dependencies: - '@octokit/types': 13.10.0 - deprecation: 2.3.1 - once: 1.4.0 - - '@octokit/request@8.4.1': - dependencies: - '@octokit/endpoint': 9.0.6 - '@octokit/request-error': 5.1.1 - '@octokit/types': 13.10.0 - universal-user-agent: 6.0.1 - - '@octokit/rest@20.1.2': - dependencies: - '@octokit/core': 5.2.2 - '@octokit/plugin-paginate-rest': 11.4.4-cjs.2(@octokit/core@5.2.2) - '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.2) - '@octokit/plugin-rest-endpoint-methods': 13.3.2-cjs.1(@octokit/core@5.2.2) - - '@octokit/types@13.10.0': - dependencies: - '@octokit/openapi-types': 24.2.0 - - '@octokit/types@6.41.0': - dependencies: - '@octokit/openapi-types': 12.11.0 - '@oxc-project/types@0.133.0': {} '@react-aria/focus@3.22.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': @@ -6822,8 +6640,6 @@ snapshots: baseline-browser-mapping@2.10.31: {} - before-after-hook@2.2.3: {} - better-opn@3.0.2: dependencies: open: 8.4.2 @@ -6847,8 +6663,6 @@ snapshots: boolean@3.2.0: optional: true - bottleneck@2.19.5: {} - bplist-creator@0.0.8: dependencies: stream-buffers: 2.2.0 @@ -7189,8 +7003,6 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - deprecation@2.3.1: {} - dequal@2.0.3: {} detect-indent@7.0.2: {} @@ -8559,8 +8371,7 @@ snapshots: lodash.merge@4.6.2: {} - lodash@4.18.1: - optional: true + lodash@4.18.1: {} log-symbols@4.1.0: dependencies: @@ -8698,14 +8509,8 @@ snapshots: braces: 3.0.3 picomatch: 2.3.2 - mime-db@1.52.0: {} - mime-db@1.54.0: {} - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - mimic-fn@2.1.0: {} mimic-function@5.0.1: {} @@ -10037,8 +9842,6 @@ snapshots: dependencies: imurmurhash: 0.1.4 - universal-user-agent@6.0.1: {} - universalify@0.1.2: {} universalify@2.0.1: {}