From 6b9f27c95da76c04e149e687dd2971c8bd359dcf Mon Sep 17 00:00:00 2001 From: Cacie Prins Date: Mon, 7 Jul 2025 13:03:13 -0400 Subject: [PATCH] dependency: electron@36.4.0 (#31912) * dependency: update Electron to 34 * setup workflows to run against binary branch and on all tests * changelog entry * node version did bump minorly * Update base-internal image to match new node version * fix typo * changelog updates * bumping to newest version just released today - hopefully solves glibc error * fix cy in cy * remove extra register_ts_node require * updated lockfile * upgrade better-sqlite3 * changelog * update electron in top level package.json * ts issue, update to use binary workflow for e35, update ancillary deps * update gh issue templates * bump missed image names and engines field * node 22 * snapgen? * ts issue, log errors even if err.stderr/stdout is null * more logging * defer http-proxy common.js due to regexp issue in v8 13.4.* - 13.8.91 * update images for node 22.15.1, use bullseye instead of buster for bettersqlite * use bullseye image for glibc2.31 build of bettersqlite * use electron-36 publish binary branch * node-abi update, set http-proxy deferred in darwin * update .node-version * attempt to patch http-proxy to immediately defer http-proxy/lib/http-proxy/common.js * empty commit [run ci] * better patch? * changelog * changelog * Updates v8 snapshots to fix windows build (#31918) * use node 22 in the v8 snapshot update workflow * index on windows-v8-snapshots: a013464197 use node 22 in the v8 snapshot update workflow * index on windows-v8-snapshots: a013464197 use node 22 in the v8 snapshot update workflow * index on windows-v8-snapshots: a013464197 use node 22 in the v8 snapshot update workflow * run workflows on windows/mac --------- Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> * update protocol system test snapshots (#31925) * use snapshot to verify the error message on invalid json (#31926) * chore: account for all node: internal stacks when trying to calculate the code frame. Accounts additionally for node:diagnostics_channel (#31935) * Fixes electron 36 integrity checks (#31956) * update the fs.readFileSync integrity check expectation * maybe this fn is missing from the expected stack? * more debug, change the stack up a little * actual fn name is traceSync * logging * logging * remove logging from integrity check * maybe circle api changed? * correct params * inspect stack frames for differences * have to manually serialize the stack frames * change expectation * update expected global keys * additional allow list * update key allow list * increase zipfile size limit on non-windows builds * revert logging changes * Update scripts/binary/binary-integrity-check-source.js * increase timeout to 120s for darwin fsevents/native module test (#31975) * print out stdout for darwin test * try and fix test * update readme re: browsers-internal images, ensure module_api_spec binary test uses correct electron version * Update .circleci/workflows.yml Co-authored-by: Bill Glesias * Update .circleci/workflows.yml Co-authored-by: Bill Glesias * trigger 15.0.0 binary pipeline rather than electron-36 specific one * Update cli/CHANGELOG.md Co-authored-by: Bill Glesias * Update cli/CHANGELOG.md --------- Co-authored-by: Jennifer Shehane Co-authored-by: Ryan Manuel Co-authored-by: Jennifer Shehane Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> Co-authored-by: Bill Glesias --- .circleci/workflows.yml | 32 +- .github/ISSUE_TEMPLATE/1-bug-report.yml | 2 +- .github/ISSUE_TEMPLATE/2-memory-issue.yml | 2 +- .github/ISSUE_TEMPLATE/3-install-issue.yml | 2 +- .../workflows/update_v8_snapshot_cache.yml | 2 +- .node-version | 2 +- cli/CHANGELOG.md | 7 + docker-compose.yml | 2 +- package.json | 5 +- .../src/actions/ElectronActions.ts | 2 +- .../src/sources/ErrorDataSource.ts | 2 +- packages/electron/README.md | 17 +- packages/electron/package.json | 2 +- packages/server/__snapshots__/fixture_spec.js | 4 + packages/server/package.json | 4 +- packages/server/test/unit/fixture_spec.js | 6 +- patches/http-proxy+1.18.1.patch | 16 + .../binary/binary-integrity-check-source.js | 6 +- scripts/binary/index.js | 6 +- scripts/binary/smoke.js | 6 +- .../binary/trigger-publish-binary-pipeline.js | 3 +- scripts/binary/zip.js | 2 +- system-tests/__snapshots__/protocol_spec.js | 8 +- .../v8-snapshot/native-modules/app.js | 5 +- .../test-binary/ci_environments_spec.ts | 6 +- system-tests/test-binary/module_api_spec.ts | 2 +- tooling/electron-mksnapshot/package.json | 2 +- .../cache/darwin/snapshot-meta.json | 32 +- .../cache/linux/snapshot-meta.json | 28 +- .../cache/win32/snapshot-meta.json | 30 +- .../src/generator/snapshot-generator.ts | 22 +- .../test/integration/loading.spec.ts | 30 +- yarn.lock | 304 ++++++++++++------ 33 files changed, 401 insertions(+), 200 deletions(-) create mode 100644 packages/server/__snapshots__/fixture_spec.js create mode 100644 patches/http-proxy+1.18.1.patch diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index e19142ddcf..69433004f9 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -38,6 +38,8 @@ mainBuildFilters: &mainBuildFilters - /^release\/\d+\.\d+\.\d+$/ # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - 'update-v8-snapshot-cache-on-develop' + - 'electron-36' + - 'chore/test_cypress_recipes_15' - 'mabel/issue-31677-reporter-redesign' # usually we don't build Mac app - it takes a long time @@ -49,6 +51,8 @@ macWorkflowFilters: &darwin-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] + - equal: [ 'electron-36', << pipeline.git.branch >> ] + - equal: [ 'chore/test_cypress_recipes_15', << pipeline.git.branch >> ] - equal: [ 'mabel/issue-31677-reporter-redesign', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ @@ -60,6 +64,8 @@ linuxArm64WorkflowFilters: &linux-arm64-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] + - equal: [ 'electron-36', << pipeline.git.branch >> ] + - equal: [ 'chore/test_cypress_recipes_15', << pipeline.git.branch >> ] - equal: [ 'mabel/issue-31677-reporter-redesign', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ @@ -83,6 +89,8 @@ windowsWorkflowFilters: &windows-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] + - equal: [ 'electron-36', << pipeline.git.branch >> ] + - equal: [ 'chore/test_cypress_recipes_15', << pipeline.git.branch >> ] - equal: [ 'mabel/issue-31677-reporter-redesign', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ @@ -92,7 +100,7 @@ executors: # the Docker image with Cypress dependencies and Chrome browser cy-doc: docker: - - image: cypress/base-internal:20.18.1-bullseye + - image: cypress/base-internal:22.15.1-bullseye # by default, we use "medium" to balance performance + CI costs. bump or reduce on a per-job basis if needed. resource_class: medium environment: @@ -100,7 +108,7 @@ executors: kitchensink-executor: docker: - - image: cypress/base-internal:20.18.1-bullseye + - image: cypress/base-internal:22.15.1-bullseye # by default, we use "medium" to balance performance + CI costs. bump or reduce on a per-job basis if needed. resource_class: medium environment: @@ -109,7 +117,7 @@ executors: # Docker image with non-root "node" user non-root-docker-user: docker: - - image: cypress/base-internal:20.18.1-bullseye + - image: cypress/base-internal:22.15.1-bullseye user: node environment: PLATFORM: linux @@ -157,7 +165,7 @@ commands: name: Set environment variable to determine whether or not to persist artifacts command: | echo "Setting SHOULD_PERSIST_ARTIFACTS variable" - echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "mabel/issue-31677-reporter-redesign" ]]; then + echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "electron-36" && "$CIRCLE_BRANCH" != "chore/test_cypress_recipes_15" ]]; then export SHOULD_PERSIST_ARTIFACTS=true fi' >> "$BASH_ENV" # You must run `setup_should_persist_artifacts` command and be using bash before running this command @@ -625,24 +633,24 @@ commands: version: << parameters.google-chrome-for-testing-version >> install_chromedriver: false - # This code builds better-sqlite3 on Debian 10 (Buster). This is necessary because Debian 10 has the oldest glibc version (2.28) that we support. + # This code builds better-sqlite3 on Debian 11 (Bullseye). This is necessary because Debian 10 has the oldest glibc version (2.31) that we support. # # Since this is running Docker remote (because the job running the command may not be using an executor with the appropriate glibc version), we need to # copy the project into the container, and copy the built plugin out of the container because the host running docker does not have access to the # project directory so volume mounts are not possible. The built plugin is copied to the project directory so it can be injected into the final binary. build-better-sqlite3: - description: Build better-sqlite3 for glibc 2.28 + description: Build better-sqlite3 for glibc 2.31 steps: - setup_remote_docker - run: - name: Build better-sqlite3 for glibc 2.28 + name: Build better-sqlite3 for glibc 2.31 command: | if [[ ! -f better_sqlite3.node ]]; then set -x apt update && apt install -y docker.io - docker run -d --name better-sqlite3-builder cypress/base-internal:20.15.0-buster-python3.8-gcc-10.5 /bin/bash -c "sleep 1000000000" + docker run -d --name better-sqlite3-builder cypress/base-internal:22.15.1-glibc2.31 /bin/bash -c "sleep 1000000000" docker cp ~/cypress/node_modules/better-sqlite3 better-sqlite3-builder:/better-sqlite3 - docker exec -it better-sqlite3-builder /bin/bash -c "cd /better-sqlite3 && source /root/.bashrc && chown -R root:root . && npm install --ignore-scripts && npx --no-install prebuild -r electron -t 33.2.1 --include-regex 'better_sqlite3.node$'" + docker exec -it better-sqlite3-builder /bin/bash -c "cd /better-sqlite3 && source /root/.bashrc && chown -R root:root . && npm install --ignore-scripts && npx --no-install prebuild -r electron -t 36.4.0 --include-regex 'better_sqlite3.node$'" docker cp better-sqlite3-builder:/better-sqlite3/build/Release/better_sqlite3.node ~/cypress/node_modules/better-sqlite3/build/Release/better_sqlite3.node docker rm -f better-sqlite3-builder cp ~/cypress/node_modules/better-sqlite3/build/Release/better_sqlite3.node ~/cypress/better_sqlite3.node @@ -1896,7 +1904,7 @@ jobs: working_directory: ~/cypress docker: # we need an image with yarn 4 berry installed on it to run this test - - image: cypress/base-internal:20.18.1-yarn-berry + - image: cypress/base-internal:22.15.1-yarn-berry environment: # needed to inform the bootstrap-docker-container.sh script to link the binary in the system-test project directory REPO_DIR: /root/cypress @@ -1930,7 +1938,7 @@ jobs: parallelism: 1 working_directory: ~/cypress docker: - - image: cypress/base-internal:20.18.1-bullseye + - image: cypress/base-internal:22.15.1-bullseye environment: # needed to inform the bootstrap-docker-container.sh script to link the binary in the system-test project directory REPO_DIR: /root/cypress @@ -2584,7 +2592,7 @@ jobs: <<: *defaults resource_class: small docker: - - image: cypress/base-internal:18.17.1 + - image: cypress/base-internal:22.15.1 steps: - maybe_skip_binary_jobs - restore_workspace_binaries diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yml b/.github/ISSUE_TEMPLATE/1-bug-report.yml index 19d6046515..b80e0dfd27 100644 --- a/.github/ISSUE_TEMPLATE/1-bug-report.yml +++ b/.github/ISSUE_TEMPLATE/1-bug-report.yml @@ -43,7 +43,7 @@ body: attributes: label: Node version description: What version of node.js are you using to run Cypress? - placeholder: ex. v20.18.1 + placeholder: ex. v22.14.0 validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/2-memory-issue.yml b/.github/ISSUE_TEMPLATE/2-memory-issue.yml index f492fbb8d2..89983fb9ec 100644 --- a/.github/ISSUE_TEMPLATE/2-memory-issue.yml +++ b/.github/ISSUE_TEMPLATE/2-memory-issue.yml @@ -51,7 +51,7 @@ body: attributes: label: Node version description: What version of node.js are you using to run Cypress? - placeholder: ex. v20.18.1 + placeholder: ex. v22.14.0 validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/3-install-issue.yml b/.github/ISSUE_TEMPLATE/3-install-issue.yml index 2a4ce852ce..9349700f20 100644 --- a/.github/ISSUE_TEMPLATE/3-install-issue.yml +++ b/.github/ISSUE_TEMPLATE/3-install-issue.yml @@ -38,7 +38,7 @@ body: attributes: label: Node version description: What version of node.js are you using to run Cypress? - placeholder: ex. v20.18.1 + placeholder: ex. v22.14.0 validations: required: true - type: dropdown diff --git a/.github/workflows/update_v8_snapshot_cache.yml b/.github/workflows/update_v8_snapshot_cache.yml index 4cc2c14620..8b59aed458 100644 --- a/.github/workflows/update_v8_snapshot_cache.yml +++ b/.github/workflows/update_v8_snapshot_cache.yml @@ -88,7 +88,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 cache: 'yarn' - name: Run yarn # set the timeout here to try and deal with Windows slowness diff --git a/.node-version b/.node-version index d4b7699d36..8320a6d299 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -20.18.1 +22.15.1 diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 719d7f1c97..b60cfd3fc7 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -29,6 +29,12 @@ _Released 07/15/2025 (PENDING)_ - The Cypress Command log has a new design when viewing a list of tests. Addresses [#31677](https://github.com/cypress-io/cypress/issues/31677). Addressed in [#31914](https://github.com/cypress-io/cypress/pull/31914). - Migration helpers and related errors are no longer shown when upgrading from Cypress versions earlier than 10.0.0. To migrate from a pre-10.0.0 version, upgrade one major version at a time to receive the appropriate guidance. Addresses [#31345](https://github.com/cypress-io/cypress/issues/31345). Addressed in [https://github.com/cypress-io/cypress/pull/31629/](https://github.com/cypress-io/cypress/pull/31629/). +**Dependency Updates:** + +- Upgraded `electron` from `33.2.1` to `36.4.0`. Addresses [#31257](https://github.com/cypress-io/cypress/issues/31257). Addressed in [#31912](https://github.com/cypress-io/cypress/pull/31912). +- Upgraded bundled Node.js version from `20.18.1` to `22.15.1`. Addresses [#31257](https://github.com/cypress-io/cypress/issues/31257). Addressed in [#31912](https://github.com/cypress-io/cypress/pull/31912). +- Upgraded bundled Chromium version from `130.0.6723.137` to `136.0.7103.149`. Addresses [#31257](https://github.com/cypress-io/cypress/issues/31257). Addressed in [#31912](https://github.com/cypress-io/cypress/pull/31912). + ## 14.5.2 _Released 7/15/2025 (PENDING)_ @@ -127,6 +133,7 @@ _Released 5/6/2025_ - Downgraded `cli-table3` to 0.6.1. Addressed in [31631](https://github.com/cypress-io/cypress/pull/31631). + ## 14.3.2 _Released 4/22/2025_ diff --git a/docker-compose.yml b/docker-compose.yml index 64f5dcbc70..26df2a722b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,7 +31,7 @@ services: - .:/opt/cypress ci: # This should mirror the image used in workflows.yml - image: cypress/base-internal:20.18.1-bullseye + image: cypress/base-internal:22.15.1-bullseye ports: - 5566:5566 - 5567:5567 diff --git a/package.json b/package.json index 6dbfbf61b6..3ca81b45d5 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "dedent": "^0.7.0", "del": "3.0.0", "detect-port": "^2.1.0", - "electron": "33.2.1", + "electron": "36.4.0", "electron-builder": "^25.1.8", "enzyme-adapter-react-16": "1.12.1", "eslint": "^8.56.0", @@ -214,7 +214,7 @@ "yarn-deduplicate": "3.1.0" }, "engines": { - "node": ">=20.18.1", + "node": ">=22.15.1", "yarn": ">=1.22.22" }, "productName": "Cypress", @@ -279,6 +279,7 @@ "@types/react": "18.3.12", "browserify-sign": "4.2.2", "devtools-protocol": "0.0.1459876", + "node-abi": "4.9.0", "sharp": "0.29.3", "vue-template-compiler": "2.6.12" }, diff --git a/packages/data-context/src/actions/ElectronActions.ts b/packages/data-context/src/actions/ElectronActions.ts index 8d03ecb43b..48d845770b 100644 --- a/packages/data-context/src/actions/ElectronActions.ts +++ b/packages/data-context/src/actions/ElectronActions.ts @@ -47,7 +47,7 @@ export class ElectronActions { this.electron.browserWindow?.show() if (this.isMac) { - this.ctx.config.electronApp?.dock.show().catch((e) => { + this.ctx.config.electronApp?.dock?.show().catch((e) => { this.ctx.logTraceError(e) }) } else { diff --git a/packages/data-context/src/sources/ErrorDataSource.ts b/packages/data-context/src/sources/ErrorDataSource.ts index 1bf2c0a15c..1db95ec6ba 100644 --- a/packages/data-context/src/sources/ErrorDataSource.ts +++ b/packages/data-context/src/sources/ErrorDataSource.ts @@ -44,7 +44,7 @@ export class ErrorDataSource { const stackLines = stackUtils.getStackLines(source.cypressError.stack ?? '') // we want to filter out any tsx transformation code in the stack to help identify the error. Windows stack can have both posix paths and dos paths so we need to filter both (last line is a no-op on posix as its the same thing) - const filteredStackLines = stackLines.filter((stackLine) => !stackLine.includes('node:electron') && !stackLine.includes('node:internal') && !stackLine.includes('source-map-support') && !stackLine.includes(tsxCodeFrameFilter) && !(isWindows && stackLine.includes(windowsTsxCodeFrameFilter))) + const filteredStackLines = stackLines.filter((stackLine) => !stackLine.includes('node:') && !stackLine.includes('source-map-support') && !stackLine.includes(tsxCodeFrameFilter) && !(isWindows && stackLine.includes(windowsTsxCodeFrameFilter))) const parsedLine = stackUtils.parseStackLine(filteredStackLines[0] ?? '') if (parsedLine) { diff --git a/packages/electron/README.md b/packages/electron/README.md index 208a609b28..b86afaab7d 100644 --- a/packages/electron/README.md +++ b/packages/electron/README.md @@ -24,7 +24,6 @@ yarn workspace @packages/electron test-watch The version of `electron` that is bundled with Cypress should be kept as up-to-date as possible with the [stable Electron releases](https://www.electronjs.org/releases/stable). Many users expect the bundled Chromium and Node.js to be relatively recent. Also, historically, it has been extremely difficult to upgrade over multiple major versions of Electron at once, because of all the breaking changes in Electron and Node.js that impact Cypress. - Upgrading `electron` involves more than just bumping this package's `package.json`. Here are additional tasks to check off when upgrading Electron: - [ ] **Write accurate changelog items.** The "User-facing changelog" for an Electron upgrade should mention the new Node.js and Chromium versions bundled. If this is a patch version of `electron`, a changelog entry might not be needed. @@ -36,17 +35,16 @@ Upgrading `electron` involves more than just bumping this package's `package.jso - the major version number of Node.js changes, since users rely on the bundled Node.js to load plugins and `.js` fixtures, or - there are changes to Electron that require new shared libraries to be installed on Linux, breaking existing CI setups, or - there is some other change that would break existing usage of Cypress (for example, a Web API feature being removed/added to the bundled Chromium) -- [ ] **Create and publish Docker `base-internal` and `browsers-internal` family images matching the Node.js and Chromium versions in Electron.** These images live inside the [`cypress-docker-images`](https://github.com/cypress-io/cypress-docker-images/) repository. The `browsers-internal` image will be used inside our CI pipelines. The `base-internal` image will be used by the `browsers-internal` image and possibly other system images (described below). The Chromium version can be determined from the [DEPS](https://github.com/electron/electron/blob/main/DEPS) file in Electron's repository on the correct tag. The Node version can be determined from the [Electron Releases page](https://www.electronjs.org/docs/latest/tutorial/electron-timelines). For general use of Cypress in Docker, we encourage the use of the [Cypress Docker Factory](https://github.com/cypress-io/cypress-docker-images#cypressfactory). This works great for using Cypress as an end user, but doesn't fully suit the needs for developing Cypress, as we require: +- [ ] **Create and publish Docker `base-internal` family images matching the Node.js and Chromium versions in Electron.** These images live inside the [`cypress-docker-images`](https://github.com/cypress-io/cypress-docker-images/) repository. The `base-internal` images will be used inside our CI pipelines. For general use of Cypress in Docker, we encourage the use of the [Cypress Docker Factory](https://github.com/cypress-io/cypress-docker-images#cypressfactory). This works great for using Cypress as an end user, but doesn't fully suit the needs for developing Cypress, as we require: - The installation of packages, such as `curl`, `xauth`, and `build-essential`/`make` needed for our [`circleci`](../../.circleci/config.yml) jobs/pipelines. - Specific images targeted to test Cypress on various node versions and distributions of linux, such as different versions of `ubuntu`. These images are currently created on an 'as-needed' basis and are published manually to the [cypress docker repository](https://hub.docker.com/u/cypress). When creating these images, make sure: - - The [browsers-internal](https://github.com/cypress-io/cypress-docker-images/tree/master/browsers-internal) image contains the latest version of Firefox and Edge. - The Ubuntu images in [base-internal](https://github.com/cypress-io/cypress-docker-images/tree/master/base-internal) are updated to be used in the [system binary tests](../../system-tests/test-binary) if any of the following are true for the images used inside the system binary tests: - The last two major [Ubuntu LTS Releases](https://ubuntu.com/about/release-cycle) are out-of-date. - The [NodeJS](https://nodejs.org/en) version is not the active LTS. - [ ] **Update `workflows.yml`** - - [ ] Ensure it references the new `base-internal` and `browsers-internal` Docker images + - [ ] Ensure it references the new `base-internal` Docker images - [ ] **Ensure that a matching Node.js version is enforced in the monorepo for local development and CI.** When Electron is upgraded, oftentimes, the bundled Node.js version that comes with Electron is updated as well. Because all unit and integration tests run in normal Node.js (not Electron's Node.js), it's important for this Node.js version to be synced with the monorepo. There are a few places where this needs to be done: - [ ] [`/.node-version`](../../.node-version) - used by `nvm` and other Node version managers @@ -63,7 +61,7 @@ Upgrading `electron` involves more than just bumping this package's `package.jso - [ ] Update the target `electron` version in the circle configuration - [ ] Update the docker image to the new browsers-internal image made in the previous step - [ ] Temporarily update the circle configuration to allow `cypress` to run against the branch - - [ ] Temporarily set target `cypress-publish-binary` branch as a `branch` property on the request body in [../../scripts/binary/trigger-publish-binary-pipeline.js](../../scripts/binary/trigger-publish-binary-pipeline.js) script, so that you can test against this branch from the electron upgrade branch + - [ ] Temporarily set target `cypress-publish-binary` branch as a `branch` property on the request body in [../../scripts/binary/trigger-publish-binary-pipeline.js](../../scripts/binary/trigger-publish-binary-pipeline.js) script, so that you can test against this branch from the electron upgrade branch. This property must be set both at the root of the body object, and on the `parameters` key. If it is not set at the root, the binary pipeline will continue to use the primary branch. - [ ] **Manually smoke test `cypress open`.** Upgrading Electron can break the `desktop-gui` in unexpected ways. Since testing in this area is weak, double-check that things like launching `cypress open`, signing into Cypress Cloud, and launching Electron tests still work. @@ -87,3 +85,12 @@ Upgrading `electron` involves more than just bumping this package's `package.jso *Solution*: This is often due to a mismatched prebuild of `better-sqlite3`. Ensure your repository is clear of untracked files with `git clean -xfd`, and run `yarn` again. If the issue persists, ensure you are running the latest version of your operating system. Electron prebuilds key to darwin/linux/windows, and do not differentiate between versions of the same. +#### node-abi out of date + +If you run into an error like below, please try some of the strategies below. + +```shell +Could not detect abi for version X.X.X and runtime electron. Updating "node-abi" might help solve this issue if it is a new release of electron +``` + +*Solution*: See if there's a new version of `@electron/rebuild` with a newer version of `node-abi` within it. If there is not a newer version, find the [latest release](https://github.com/electron/node-abi/releases) of `node-abi` that has an updated ABI registry with an `abi` entry matching the major version of Electron that you're updating to. Set this `node-abi` version in the `resolutions` of our [package.json](./package.json) file and rerun `yarn`. \ No newline at end of file diff --git a/packages/electron/package.json b/packages/electron/package.json index dc8d22b68f..19c30978cf 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -24,7 +24,7 @@ }, "devDependencies": { "@electron/fuses": "1.8.0", - "@electron/packager": "18.3.4", + "@electron/packager": "18.3.6", "execa": "4.1.0", "mocha": "3.5.3", "systeminformation": "5.22.8" diff --git a/packages/server/__snapshots__/fixture_spec.js b/packages/server/__snapshots__/fixture_spec.js new file mode 100644 index 0000000000..07c7c612be --- /dev/null +++ b/packages/server/__snapshots__/fixture_spec.js @@ -0,0 +1,4 @@ +exports['invalid json error message'] = ` +'bad_json.json' is not valid JSON. +Expected ',' or '}' after property value in JSON at position 20 (line 3 column 3) while parsing near "{\\n \\"bad\\": \\"json\\"\\n \\"should\\": \\"not parse..." +` diff --git a/packages/server/package.json b/packages/server/package.json index 0704e6f10b..e89d97a3e9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -40,7 +40,7 @@ "ast-types": "0.13.3", "axios": "^1.7.9", "base64url": "^3.0.1", - "better-sqlite3": "11.5.0", + "better-sqlite3": "11.9.1", "black-hole-stream": "0.0.1", "bluebird": "3.7.2", "body-parser": "1.20.0", @@ -146,7 +146,7 @@ "@cypress/debugging-proxy": "2.0.1", "@cypress/sinon-chai": "2.9.1", "@cypress/webpack-dev-server": "0.0.0-development", - "@electron/rebuild": "3.7.1", + "@electron/rebuild": "4.0.1", "@ffprobe-installer/ffprobe": "1.1.0", "@packages/config": "0.0.0-development", "@packages/data-context": "0.0.0-development", diff --git a/packages/server/test/unit/fixture_spec.js b/packages/server/test/unit/fixture_spec.js index 40420bb276..483ee275e3 100644 --- a/packages/server/test/unit/fixture_spec.js +++ b/packages/server/test/unit/fixture_spec.js @@ -6,6 +6,7 @@ const fixture = require(`../../lib/fixture`) const { fs } = require(`../../lib/util/fs`) const FixturesHelper = require('@tooling/system-tests') const { getCtx } = require(`../../lib/makeDataContext`) +const snapshot = require('snap-shot-it') let ctx @@ -68,14 +69,11 @@ describe('lib/fixture', () => { context('json files', () => { it('throws when json is invalid', function () { - const e = - `\'bad_json.json\' is not valid JSON.\nExpected ',' or '}' after property value in JSON at position 20 while parsing near "{\\n \\"bad\\": \\"json\\"\\n \\"should\\": \\"not parse..."` - return fixture.get(this.fixturesFolder, 'bad_json.json') .then(() => { throw new Error('should have failed but did not') }).catch((err) => { - expect(err.message).to.eq(e) + snapshot('invalid json error message', err.message) }) }) diff --git a/patches/http-proxy+1.18.1.patch b/patches/http-proxy+1.18.1.patch new file mode 100644 index 0000000000..5019000088 --- /dev/null +++ b/patches/http-proxy+1.18.1.patch @@ -0,0 +1,16 @@ +diff --git a/node_modules/http-proxy/lib/http-proxy/common.js b/node_modules/http-proxy/lib/http-proxy/common.js +index 6513e81..5ee132c 100644 +--- a/node_modules/http-proxy/lib/http-proxy/common.js ++++ b/node_modules/http-proxy/lib/http-proxy/common.js +@@ -6,6 +6,11 @@ var common = exports, + var upgradeHeader = /(^|,)\s*upgrade\s*($|,)/i, + isSSL = /^https|wss/; + ++/** ++ * This is a workaround to prevent the module from being included in the ++ * v8 snapshot due to serialization issues in v8 versions 13.4.102-13.8.91. ++ */ ++common._reject_file_as_deferred = require('path').join('a','b') + /** + * Simple Regex for testing if protocol is https + */ diff --git a/scripts/binary/binary-integrity-check-source.js b/scripts/binary/binary-integrity-check-source.js index a6892a47d8..79acc78ace 100644 --- a/scripts/binary/binary-integrity-check-source.js +++ b/scripts/binary/binary-integrity-check-source.js @@ -94,7 +94,7 @@ function validateElectron (electron) { function validateFs (fs) { // Hard coded function as this is electron code and there's not an easy way to get the function string at package time. If this fails on an updated version of electron, we'll need to update this. - if (originalToString.call(fs.readFileSync) !== `function(e,r){const n=splitPath(e);if(!n.isAsar)return w.apply(this,arguments);const{asarPath:i,filePath:a}=n,o=getOrCreateArchive(i);if(!o)throw createError("INVALID_ARCHIVE",{asarPath:i});const c=o.getFileInfo(a);if(!c)throw createError("NOT_FOUND",{asarPath:i,filePath:a});if(0===c.size)return r?"":s.Buffer.alloc(0);if(c.unpacked){const e=o.copyFileOut(a);return t.readFileSync(e,r)}if(r){if("string"==typeof r)r={encoding:r};else if("object"!=typeof r)throw new TypeError("Bad arguments")}else r={encoding:null};const{encoding:f}=r,l=s.Buffer.alloc(c.size),u=o.getFdAndValidateIntegrityLater();if(!(u>=0))throw createError("NOT_FOUND",{asarPath:i,filePath:a});return logASARAccess(i,a,c.offset),t.readSync(u,l,0,c.size,c.offset),validateBufferIntegrity(l,c.integrity),f?l.toString(f):l}`) { + if (originalToString.call(fs.readFileSync) !== `function(t,e){const r=splitPath(t);return r.isAsar?readFileFromArchiveSync(r,e):R.apply(this,arguments)}`) { console.error(`Integrity check failed for toString.call(fs.readFileSync)`) throw new Error(integrityErrorMessage) } @@ -190,6 +190,10 @@ function integrityCheck (options) { line: 1, column: 2764, }, + { + functionName: 'traceSync', + fileName: 'node:diagnostics_channel', + }, ], }) diff --git a/scripts/binary/index.js b/scripts/binary/index.js index 88aa75b7d9..40d9bacf1a 100644 --- a/scripts/binary/index.js +++ b/scripts/binary/index.js @@ -78,8 +78,10 @@ async function testExecutableVersion (buildAppExecutable, version) { la(result.stdout, 'missing output when getting built version', result) console.log('built app version', result.stdout) - la(result.stdout.trim() === version.trim(), 'different version reported', - result.stdout, 'from input version to build', version) + la( + result.stdout.trim() === version.trim(), + `different version reported: '${result.stdout.trim()}' from input version to build '${version.trim()}'`, + ) console.log('✅ using --version on the Cypress binary works') } diff --git a/scripts/binary/smoke.js b/scripts/binary/smoke.js index 7962bc1911..fdc0a97ce0 100644 --- a/scripts/binary/smoke.js +++ b/scripts/binary/smoke.js @@ -285,7 +285,7 @@ const runIntegrityTest = async function (buildAppExecutable, buildAppDir, e2e) { await fs.remove(path.join(buildAppDir, 'index2.js')) } - await testAlteringEntryPoint('console.log("simple alteration")', 'Integrity check failed with expected stack length 9 but got 10') + await testAlteringEntryPoint('console.log("simple alteration")', 'Integrity check failed with expected stack length 10 but got 12') await testAlteringEntryPoint('console.log("accessing " + global.getSnapshotResult())', 'getSnapshotResult can only be called once') function compareGlobals () { @@ -299,9 +299,9 @@ const runIntegrityTest = async function (buildAppExecutable, buildAppDir, e2e) { console.error(`extra keys in electron process: ${extraKeys}`) } - const allowList = ['__core-js_shared__', 'getSnapshotResult', 'supportTypeScript', 'Iterator'] + const allowList = ['__core-js_shared__', 'getSnapshotResult', 'supportTypeScript', 'SuppressedError', 'DisposableStack', 'AsyncDisposableStack', 'Float16Array'] - await testAlteringEntryPoint(`(${compareGlobals.toString()})()`, `extra keys in electron process: ${allowList}\nIntegrity check failed with expected stack length 9 but got 10`) + await testAlteringEntryPoint(`(${compareGlobals.toString()})()`, `extra keys in electron process: ${allowList}\nIntegrity check failed with expected stack length 10 but got 12`) const testTemporarilyRewritingEntryPoint = async () => { const file = path.join(buildAppDir, 'index.js') diff --git a/scripts/binary/trigger-publish-binary-pipeline.js b/scripts/binary/trigger-publish-binary-pipeline.js index a57cfa801d..c65586ff79 100644 --- a/scripts/binary/trigger-publish-binary-pipeline.js +++ b/scripts/binary/trigger-publish-binary-pipeline.js @@ -10,13 +10,14 @@ const { getNextVersionForBinary } = require('../get-next-version') const { nextVersion } = await getNextVersionForBinary() const body = JSON.stringify({ + branch: 'release/15.0.0', parameters: { temp_dir: os.tmpdir(), sha: process.env.CIRCLE_SHA1, job_name: process.env.CIRCLE_JOB, triggered_workflow_id: process.env.CIRCLE_WORKFLOW_ID, triggered_job_url: process.env.CIRCLE_BUILD_URL, - branch: process.env.CIRCLE_BRANCH, + branch: 'release/15.0.0', should_persist_artifacts: Boolean(process.env.SHOULD_PERSIST_ARTIFACTS), binary_version: nextVersion, }, diff --git a/scripts/binary/zip.js b/scripts/binary/zip.js index 8ab6af62a1..9c00b07fa9 100644 --- a/scripts/binary/zip.js +++ b/scripts/binary/zip.js @@ -75,7 +75,7 @@ const checkZipSize = function (zipPath) { // Before you modify these max sizes, check and see what you did that might have // done to increase the size of the binary, and if you do need to change it, // call it out in the PR description / comments - const MAX_ALLOWED_SIZE_MB = os.platform() === 'win32' ? 295 : 200 + const MAX_ALLOWED_SIZE_MB = os.platform() === 'win32' ? 295 : 256 const MAX_ZIP_FILE_SIZE = megaBytes(MAX_ALLOWED_SIZE_MB) if (stats.size > MAX_ZIP_FILE_SIZE) { diff --git a/system-tests/__snapshots__/protocol_spec.js b/system-tests/__snapshots__/protocol_spec.js index 8a3b23dd91..42379f0a2b 100644 --- a/system-tests/__snapshots__/protocol_spec.js +++ b/system-tests/__snapshots__/protocol_spec.js @@ -6695,7 +6695,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 4, "column": 0, "whitespace": " ", - "stack": "Error\\n at ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:108:42)" + "stack": "Error\\n at ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at __webpack_require__ (http://localhost:2121/__cypress/src/main.js:108:42)" }, "retries": -1, "_slow": 250, @@ -6798,7 +6798,7 @@ exports['component events - experimentalSingleTabRunMode: true'] = ` "line": 4, "column": 0, "whitespace": " ", - "stack": "Error\\n at ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:108:42)" + "stack": "Error\\n at ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at __webpack_require__ (http://localhost:2121/__cypress/src/main.js:108:42)" }, "retries": -1, "_slow": 250, @@ -8514,7 +8514,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 4, "column": 0, "whitespace": " ", - "stack": "Error\\n at ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:108:42)" + "stack": "Error\\n at ./src/components/HelloEarth.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at __webpack_require__ (http://localhost:2121/__cypress/src/main.js:108:42)" }, "retries": -1, "_slow": 250, @@ -8617,7 +8617,7 @@ exports['component events - experimentalSingleTabRunMode: false'] = ` "line": 4, "column": 0, "whitespace": " ", - "stack": "Error\\n at ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at Function.__webpack_require__ (http://localhost:2121/__cypress/src/main.js:108:42)" + "stack": "Error\\n at ./src/components/HelloMars.cy.jsx (http://localhost:2121/__cypress/src/spec-0.js:16:1)\\n at __webpack_require__ (http://localhost:2121/__cypress/src/main.js:108:42)" }, "retries": -1, "_slow": 250, diff --git a/system-tests/projects/v8-snapshot/native-modules/app.js b/system-tests/projects/v8-snapshot/native-modules/app.js index 2960b672d1..bb19bbdc1a 100644 --- a/system-tests/projects/v8-snapshot/native-modules/app.js +++ b/system-tests/projects/v8-snapshot/native-modules/app.js @@ -1,12 +1,15 @@ const fsevents = require('fsevents') async function watchAndLearn () { + let stop + try { - await fsevents.watch('/tmp/', (_p, _f, _id) => {}) + stop = await fsevents.watch('/tmp/', (_p, _f, _id) => {}) } catch (err) { console.error(err) } console.log(JSON.stringify({ itemIsDir: fsevents.constants.ItemIsDir })) + stop() } watchAndLearn() diff --git a/system-tests/test-binary/ci_environments_spec.ts b/system-tests/test-binary/ci_environments_spec.ts index 95123b9a46..a14dd7e647 100644 --- a/system-tests/test-binary/ci_environments_spec.ts +++ b/system-tests/test-binary/ci_environments_spec.ts @@ -16,7 +16,7 @@ function smokeTestDockerImage (title: string, dockerImage: string, expectedExitC describe('e2e binary CI environments', () => { smokeTestDockerImage( 'bare node image fails (lacks xvfb)', - 'node:20', 1, + 'node:22', 1, async (exec) => { const { stdout } = await exec() @@ -26,11 +26,11 @@ describe('e2e binary CI environments', () => { smokeTestDockerImage( 'ubuntu 22 passes', - 'cypress/base-internal:ubuntu22-node20', 0, + 'cypress/base-internal:ubuntu22-node22', 0, ) smokeTestDockerImage( 'ubuntu 24 passes', - 'cypress/base-internal:ubuntu24-node20', 0, + 'cypress/base-internal:ubuntu24-node22', 0, ) }) diff --git a/system-tests/test-binary/module_api_spec.ts b/system-tests/test-binary/module_api_spec.ts index 03ac8eb602..7cd2103846 100644 --- a/system-tests/test-binary/module_api_spec.ts +++ b/system-tests/test-binary/module_api_spec.ts @@ -3,7 +3,7 @@ import systemTests from '../lib/system-tests' describe('module API', () => { systemTests.it('can run module API Mocha spec', { timeout: 240000, - dockerImage: 'cypress/base-internal:20.18.1-bullseye', + dockerImage: 'cypress/base-internal:22.15.1-bullseye', withBinary: true, project: 'module-api', browser: 'electron', diff --git a/tooling/electron-mksnapshot/package.json b/tooling/electron-mksnapshot/package.json index 02a9d18ab8..34faefb0df 100644 --- a/tooling/electron-mksnapshot/package.json +++ b/tooling/electron-mksnapshot/package.json @@ -15,7 +15,7 @@ "watch": "tsc --watch" }, "dependencies": { - "@electron/get": "^3.0.0", + "@electron/get": "^4.0.0", "debug": "^4.3.4", "extract-zip": "^2.0.1", "fs-extra": "^10.0.0", diff --git a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json index d234b163ae..b312aff68f 100644 --- a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json @@ -295,6 +295,7 @@ "./node_modules/graceful-fs/graceful-fs.js", "./node_modules/http-proxy/index.js", "./node_modules/http-proxy/lib/http-proxy.js", + "./node_modules/http-proxy/lib/http-proxy/common.js", "./node_modules/http-proxy/lib/http-proxy/index.js", "./node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js", "./node_modules/http-signature/lib/index.js", @@ -1042,6 +1043,8 @@ "./node_modules/@cypress/commit-info/src/index.js", "./node_modules/@cypress/commit-info/src/utils.js", "./node_modules/@cypress/get-windows-proxy/node_modules/debug/src/common.js", + "./node_modules/@cypress/get-windows-proxy/node_modules/registry-js/dist/lib/index.js", + "./node_modules/@cypress/get-windows-proxy/node_modules/registry-js/dist/lib/registry.js", "./node_modules/@cypress/get-windows-proxy/src/index.js", "./node_modules/@cypress/parse-domain/build/tries/icann.complete.json", "./node_modules/@cypress/parse-domain/build/tries/private.complete.json", @@ -1526,19 +1529,6 @@ "./node_modules/base64url/index.js", "./node_modules/basic-auth/index.js", "./node_modules/bcrypt-pbkdf/index.js", - "./node_modules/better-sqlite3/lib/database.js", - "./node_modules/better-sqlite3/lib/index.js", - "./node_modules/better-sqlite3/lib/methods/aggregate.js", - "./node_modules/better-sqlite3/lib/methods/backup.js", - "./node_modules/better-sqlite3/lib/methods/function.js", - "./node_modules/better-sqlite3/lib/methods/inspect.js", - "./node_modules/better-sqlite3/lib/methods/pragma.js", - "./node_modules/better-sqlite3/lib/methods/serialize.js", - "./node_modules/better-sqlite3/lib/methods/table.js", - "./node_modules/better-sqlite3/lib/methods/transaction.js", - "./node_modules/better-sqlite3/lib/methods/wrappers.js", - "./node_modules/better-sqlite3/lib/sqlite-error.js", - "./node_modules/better-sqlite3/lib/util.js", "./node_modules/binary-extensions/binary-extensions.json", "./node_modules/binary-extensions/index.js", "./node_modules/binaryextensions/edition-es5/index.js", @@ -2131,7 +2121,6 @@ "./node_modules/html-tags/html-tags.json", "./node_modules/html-tags/index.js", "./node_modules/http-errors/index.js", - "./node_modules/http-proxy/lib/http-proxy/common.js", "./node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js", "./node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js", "./node_modules/http-signature/lib/verify.js", @@ -3174,6 +3163,8 @@ "./node_modules/recast/parsers/babel.js", "./node_modules/recast/parsers/esprima.js", "./node_modules/recast/parsers/typescript.js", + "./node_modules/registry-js/dist/lib/index.js", + "./node_modules/registry-js/dist/lib/registry.js", "./node_modules/request-promise-core/configure/request2.js", "./node_modules/request-promise-core/errors.js", "./node_modules/request-promise-core/lib/errors.js", @@ -4006,6 +3997,19 @@ "./packages/server/node_modules/axios/lib/platform/index.js", "./packages/server/node_modules/axios/lib/platform/node/classes/FormData.js", "./packages/server/node_modules/axios/lib/platform/node/classes/URLSearchParams.js", + "./packages/server/node_modules/better-sqlite3/lib/database.js", + "./packages/server/node_modules/better-sqlite3/lib/index.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/aggregate.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/backup.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/function.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/inspect.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/pragma.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/serialize.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/table.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/transaction.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/wrappers.js", + "./packages/server/node_modules/better-sqlite3/lib/sqlite-error.js", + "./packages/server/node_modules/better-sqlite3/lib/util.js", "./packages/server/node_modules/body-parser/lib/read.js", "./packages/server/node_modules/body-parser/lib/types/json.js", "./packages/server/node_modules/body-parser/lib/types/raw.js", diff --git a/tooling/v8-snapshot/cache/linux/snapshot-meta.json b/tooling/v8-snapshot/cache/linux/snapshot-meta.json index 10db943792..a0d023fd7b 100644 --- a/tooling/v8-snapshot/cache/linux/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/linux/snapshot-meta.json @@ -294,6 +294,7 @@ "./node_modules/graceful-fs/graceful-fs.js", "./node_modules/http-proxy/index.js", "./node_modules/http-proxy/lib/http-proxy.js", + "./node_modules/http-proxy/lib/http-proxy/common.js", "./node_modules/http-proxy/lib/http-proxy/index.js", "./node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js", "./node_modules/http-signature/lib/index.js", @@ -1527,19 +1528,6 @@ "./node_modules/base64url/index.js", "./node_modules/basic-auth/index.js", "./node_modules/bcrypt-pbkdf/index.js", - "./node_modules/better-sqlite3/lib/database.js", - "./node_modules/better-sqlite3/lib/index.js", - "./node_modules/better-sqlite3/lib/methods/aggregate.js", - "./node_modules/better-sqlite3/lib/methods/backup.js", - "./node_modules/better-sqlite3/lib/methods/function.js", - "./node_modules/better-sqlite3/lib/methods/inspect.js", - "./node_modules/better-sqlite3/lib/methods/pragma.js", - "./node_modules/better-sqlite3/lib/methods/serialize.js", - "./node_modules/better-sqlite3/lib/methods/table.js", - "./node_modules/better-sqlite3/lib/methods/transaction.js", - "./node_modules/better-sqlite3/lib/methods/wrappers.js", - "./node_modules/better-sqlite3/lib/sqlite-error.js", - "./node_modules/better-sqlite3/lib/util.js", "./node_modules/binary-extensions/binary-extensions.json", "./node_modules/binary-extensions/index.js", "./node_modules/binaryextensions/edition-es5/index.js", @@ -2132,7 +2120,6 @@ "./node_modules/html-tags/html-tags.json", "./node_modules/html-tags/index.js", "./node_modules/http-errors/index.js", - "./node_modules/http-proxy/lib/http-proxy/common.js", "./node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js", "./node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js", "./node_modules/http-signature/lib/verify.js", @@ -4009,6 +3996,19 @@ "./packages/server/node_modules/axios/lib/platform/index.js", "./packages/server/node_modules/axios/lib/platform/node/classes/FormData.js", "./packages/server/node_modules/axios/lib/platform/node/classes/URLSearchParams.js", + "./packages/server/node_modules/better-sqlite3/lib/database.js", + "./packages/server/node_modules/better-sqlite3/lib/index.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/aggregate.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/backup.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/function.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/inspect.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/pragma.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/serialize.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/table.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/transaction.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/wrappers.js", + "./packages/server/node_modules/better-sqlite3/lib/sqlite-error.js", + "./packages/server/node_modules/better-sqlite3/lib/util.js", "./packages/server/node_modules/body-parser/lib/read.js", "./packages/server/node_modules/body-parser/lib/types/json.js", "./packages/server/node_modules/body-parser/lib/types/raw.js", diff --git a/tooling/v8-snapshot/cache/win32/snapshot-meta.json b/tooling/v8-snapshot/cache/win32/snapshot-meta.json index d3d827b082..40b6cd8a1d 100644 --- a/tooling/v8-snapshot/cache/win32/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/win32/snapshot-meta.json @@ -158,8 +158,6 @@ "./node_modules/@cypress/commit-info/node_modules/semver/semver.js", "./node_modules/@cypress/get-windows-proxy/node_modules/debug/src/browser.js", "./node_modules/@cypress/get-windows-proxy/node_modules/debug/src/index.js", - "./node_modules/@cypress/get-windows-proxy/node_modules/registry-js/dist/lib/index.js", - "./node_modules/@cypress/get-windows-proxy/node_modules/registry-js/dist/lib/registry.js", "./node_modules/@cypress/request-promise/lib/rp.js", "./node_modules/@cypress/request-promise/node_modules/tough-cookie/lib/cookie.js", "./node_modules/@cypress/request/index.js", @@ -296,6 +294,7 @@ "./node_modules/graceful-fs/graceful-fs.js", "./node_modules/http-proxy/index.js", "./node_modules/http-proxy/lib/http-proxy.js", + "./node_modules/http-proxy/lib/http-proxy/common.js", "./node_modules/http-proxy/lib/http-proxy/index.js", "./node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js", "./node_modules/http-signature/lib/index.js", @@ -1531,19 +1530,6 @@ "./node_modules/base64url/index.js", "./node_modules/basic-auth/index.js", "./node_modules/bcrypt-pbkdf/index.js", - "./node_modules/better-sqlite3/lib/database.js", - "./node_modules/better-sqlite3/lib/index.js", - "./node_modules/better-sqlite3/lib/methods/aggregate.js", - "./node_modules/better-sqlite3/lib/methods/backup.js", - "./node_modules/better-sqlite3/lib/methods/function.js", - "./node_modules/better-sqlite3/lib/methods/inspect.js", - "./node_modules/better-sqlite3/lib/methods/pragma.js", - "./node_modules/better-sqlite3/lib/methods/serialize.js", - "./node_modules/better-sqlite3/lib/methods/table.js", - "./node_modules/better-sqlite3/lib/methods/transaction.js", - "./node_modules/better-sqlite3/lib/methods/wrappers.js", - "./node_modules/better-sqlite3/lib/sqlite-error.js", - "./node_modules/better-sqlite3/lib/util.js", "./node_modules/binary-extensions/binary-extensions.json", "./node_modules/binary-extensions/index.js", "./node_modules/binaryextensions/edition-es5/index.js", @@ -2136,7 +2122,6 @@ "./node_modules/html-tags/html-tags.json", "./node_modules/html-tags/index.js", "./node_modules/http-errors/index.js", - "./node_modules/http-proxy/lib/http-proxy/common.js", "./node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js", "./node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js", "./node_modules/http-signature/lib/verify.js", @@ -4010,6 +3995,19 @@ "./packages/server/node_modules/axios/lib/platform/index.js", "./packages/server/node_modules/axios/lib/platform/node/classes/FormData.js", "./packages/server/node_modules/axios/lib/platform/node/classes/URLSearchParams.js", + "./packages/server/node_modules/better-sqlite3/lib/database.js", + "./packages/server/node_modules/better-sqlite3/lib/index.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/aggregate.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/backup.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/function.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/inspect.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/pragma.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/serialize.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/table.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/transaction.js", + "./packages/server/node_modules/better-sqlite3/lib/methods/wrappers.js", + "./packages/server/node_modules/better-sqlite3/lib/sqlite-error.js", + "./packages/server/node_modules/better-sqlite3/lib/util.js", "./packages/server/node_modules/body-parser/lib/read.js", "./packages/server/node_modules/body-parser/lib/types/json.js", "./packages/server/node_modules/body-parser/lib/types/raw.js", diff --git a/tooling/v8-snapshot/src/generator/snapshot-generator.ts b/tooling/v8-snapshot/src/generator/snapshot-generator.ts index c059f6b304..efb8afbc16 100644 --- a/tooling/v8-snapshot/src/generator/snapshot-generator.ts +++ b/tooling/v8-snapshot/src/generator/snapshot-generator.ts @@ -327,8 +327,8 @@ export class SnapshotGenerator { } logDebug( Object.assign({}, result, { - snapshotScript: `len: ${result.snapshotScript.length}`, - bundle: `len: ${result.bundle.length}`, + snapshotScript: `len: ${Buffer.byteLength(result.snapshotScript)} bytes`, + bundle: `len: ${Buffer.byteLength(result.bundle)} bytes`, meta: '', }), ) @@ -356,6 +356,8 @@ export class SnapshotGenerator { logInfo(`Writing snapshot script to ${this.snapshotScriptPath}`) if (this.minify) { + logInfo('Minifying snapshot script') + const minified = await minify(this.snapshotScript!.toString(), { sourceMap: false, }) @@ -369,6 +371,8 @@ export class SnapshotGenerator { } // 4. Write the snapshot script to the configured file + logInfo(`Writing snapshot script to ${this.snapshotScriptPath}`) + return fs.promises.writeFile(this.snapshotScriptPath, this.snapshotScript) } @@ -503,12 +507,16 @@ export class SnapshotGenerator { return { v8ContextFile: this.v8ContextFile, snapshotBinDir: this.snapshotBinDir } } catch (err: any) { - if (err.stderr != null) { - logError(err.stderr.toString()) - } + if (err.stderr || err.stdout) { + if (err.stderr != null) { + logError(err.stderr.toString()) + } - if (err.stdout != null) { - logDebug(err.stdout.toString()) + if (err.stdout != null) { + logDebug(err.stdout.toString()) + } + } else { + logError(err.toString()) } // If things went wrong print instructions on how to execute the diff --git a/tooling/v8-snapshot/test/integration/loading.spec.ts b/tooling/v8-snapshot/test/integration/loading.spec.ts index 5f9a018563..c1eb6b63e9 100644 --- a/tooling/v8-snapshot/test/integration/loading.spec.ts +++ b/tooling/v8-snapshot/test/integration/loading.spec.ts @@ -1,6 +1,6 @@ import path from 'path' import { SnapshotGenerator } from '../../src/generator/snapshot-generator' -import { exec as execOrig } from 'child_process' +import { exec as execOrig, spawn } from 'child_process' import { promisify } from 'util' import { electronExecutable } from '../utils/consts' import { expect, assert } from 'chai' @@ -149,19 +149,37 @@ describe('loading', () => { PROJECT_BASE_DIR: projectBaseDir, DEBUG_COLORS: 1, } - const cmd = - `${electronExecutable} -r ${projectBaseDir}/hook-require.js` + - ` ${projectBaseDir}/app.js` try { - const { stdout } = await exec(cmd, { env }) + const child = spawn(electronExecutable, ['-r', `${projectBaseDir}/hook-require.js`, `${projectBaseDir}/app.js`], { env, stdio: 'pipe' }) + + let stdout = '' + + // Pipe stdout to process.stdout for real-time output + child.stdout.pipe(process.stdout) + child.stderr.pipe(process.stderr) + + // Also collect the output + child.stdout.on('data', (data) => { + stdout += data.toString() + }) + + const exitCode = await new Promise((resolve, reject) => { + child.on('error', reject) + child.on('exit', resolve) + }) + + if (exitCode !== 0) { + throw new Error(`Process exited with code ${exitCode}`) + } + const res = JSON.parse(stdout.trim()) expect(res.itemIsDir).to.be.equal(131072) } catch (err: any) { assert.fail(err.toString()) } - }) + }).timeout(120000) } it('loads a cached module that modifies require cache', async () => { diff --git a/yarn.lock b/yarn.lock index b52bc2d772..054556a2b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2954,10 +2954,10 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@electron/asar@^3.2.1", "@electron/asar@^3.2.7": - version "3.2.10" - resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.10.tgz#615cf346b734b23cafa4e0603551010bd0e50aa8" - integrity sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw== +"@electron/asar@^3.2.13", "@electron/asar@^3.2.7": + version "3.4.1" + resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.4.1.tgz#4e9196a4b54fba18c56cd8d5cac67c5bdc588065" + integrity sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA== dependencies: commander "^5.0.0" glob "^7.1.6" @@ -3002,20 +3002,20 @@ optionalDependencies: global-agent "^3.0.0" -"@electron/node-gyp@https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2": - version "10.2.0-electron.1" - resolved "https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2" +"@electron/get@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-4.0.0.tgz#ebb11639ca921b1c1e8fffb52e5e85cde07e022b" + integrity sha512-IT42k1GIg1bhJ5RHXdKR/ExquWdQN6eU7WU6tJMnAYFLbsg0Q98GJ7kEyOONyFqE8p8Pky0hhYfmuo3Go8cxIA== dependencies: - env-paths "^2.2.0" - exponential-backoff "^3.1.1" - glob "^8.1.0" - graceful-fs "^4.2.6" - make-fetch-happen "^10.2.1" - nopt "^6.0.0" - proc-log "^2.0.1" - semver "^7.3.5" - tar "^6.2.1" - which "^2.0.2" + debug "^4.1.1" + env-paths "^3.0.0" + got "^14.4.5" + graceful-fs "^4.2.11" + progress "^2.0.3" + semver "^7.6.3" + sumchecker "^3.0.1" + optionalDependencies: + global-agent "^3.0.0" "@electron/notarize@2.5.0", "@electron/notarize@^2.1.0", "@electron/notarize@^2.5.0": version "2.5.0" @@ -3038,12 +3038,12 @@ minimist "^1.2.6" plist "^3.0.5" -"@electron/packager@18.3.4": - version "18.3.4" - resolved "https://registry.yarnpkg.com/@electron/packager/-/packager-18.3.4.tgz#5f2769b18d5f03eaff270e8e47440758282080c6" - integrity sha512-u/IxB5nelg+areXbSEWJxg1r4z0TcS1D1Dax106PsgwgPtcFvB6jjGxZVLA0WHSrLpkj6qfigHSuVXzxMTH+Qw== +"@electron/packager@18.3.6": + version "18.3.6" + resolved "https://registry.yarnpkg.com/@electron/packager/-/packager-18.3.6.tgz#3596399334866737bc33ab663e90376d7aad89e4" + integrity sha512-1eXHB5t+SQKvUiDpWGpvr90ZSSbXj+isrh3YbjCTjKT4bE4SQrKSBfukEAaBvp67+GXHFtCHjQgN9qSTFIge+Q== dependencies: - "@electron/asar" "^3.2.1" + "@electron/asar" "^3.2.13" "@electron/get" "^3.0.0" "@electron/notarize" "^2.1.0" "@electron/osx-sign" "^1.0.5" @@ -3083,20 +3083,20 @@ tar "^6.0.5" yargs "^17.0.1" -"@electron/rebuild@3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.7.1.tgz#27ed124f7f1dbed92b222aabe68c0e4a3e6c5cea" - integrity sha512-sKGD+xav4Gh25+LcLY0rjIwcCFTw+f/HU1pB48UVbwxXXRGaXEqIH0AaYKN46dgd/7+6kuiDXzoyAEvx1zCsdw== +"@electron/rebuild@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-4.0.1.tgz#0620d5bb71a0b8b09a86fb9fa979244e1fcc10bf" + integrity sha512-iMGXb6Ib7H/Q3v+BKZJoETgF9g6KMNZVbsO4b7Dmpgb5qTFqyFTzqW9F3TOSHdybv2vKYKzSS9OiZL+dcJb+1Q== dependencies: - "@electron/node-gyp" "https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2" "@malept/cross-spawn-promise" "^2.0.0" chalk "^4.0.0" debug "^4.1.1" detect-libc "^2.0.1" - fs-extra "^10.0.0" got "^11.7.0" - node-abi "^3.45.0" - node-api-version "^0.2.0" + graceful-fs "^4.2.11" + node-abi "^4.2.0" + node-api-version "^0.2.1" + node-gyp "^11.2.0" ora "^5.1.0" read-binary-file-arch "^1.0.6" semver "^7.3.5" @@ -6492,6 +6492,11 @@ "@angular-devkit/schematics" "18.2.11" jsonc-parser "3.3.1" +"@sec-ant/readable-stream@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz#60de891bb126abfdc5410fdc6166aca065f10a0c" + integrity sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg== + "@semantic-release/changelog@6.0.3": version "6.0.3" resolved "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz#6195630ecbeccad174461de727d5f975abc23eeb" @@ -6710,6 +6715,11 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== +"@sindresorhus/is@^7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-7.0.1.tgz#693cd0bfa7fdc71a3386b72088b660fb70851927" + integrity sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ== + "@sindresorhus/merge-streams@^2.1.0": version "2.3.0" resolved "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958" @@ -7427,6 +7437,13 @@ dependencies: defer-to-connect "^2.0.0" +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + "@tailwindcss/container-queries@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz#9a759ce2cb8736a4c6a0cb93aeb740573a731974" @@ -7977,10 +7994,10 @@ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== -"@types/http-cache-semantics@*": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" - integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== +"@types/http-cache-semantics@*", "@types/http-cache-semantics@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== "@types/http-errors@*": version "2.0.1" @@ -8164,12 +8181,12 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@>=10.0.0", "@types/node@^22.5.5": - version "22.10.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.1.tgz#41ffeee127b8975a05f8c4f83fb89bcb2987d766" - integrity sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ== +"@types/node@*", "@types/node@>=10.0.0", "@types/node@^22.5.5", "@types/node@^22.7.7": + version "22.15.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.18.tgz#2f8240f7e932f571c2d45f555ba0b6c3f7a75963" + integrity sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg== dependencies: - undici-types "~6.20.0" + undici-types "~6.21.0" "@types/node@16.9.1": version "16.9.1" @@ -8188,7 +8205,7 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/node@^20.1.0", "@types/node@^20.16.0", "@types/node@^20.9.0": +"@types/node@^20.1.0", "@types/node@^20.16.0": version "20.16.12" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.12.tgz#61cc9be049584b472fa31e465aa0ab3c090dac56" integrity sha512-LfPFB0zOeCeCNQV3i+67rcoVvoN5n0NVuR2vLG0O5ySQMgchuZlC4lgz546ZOJyDtj5KIgOxy+lacOimfqZAIA== @@ -10876,6 +10893,14 @@ better-sqlite3@11.5.0: bindings "^1.5.0" prebuild-install "^7.1.1" +better-sqlite3@11.9.1: + version "11.9.1" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-11.9.1.tgz#0540da2f2ce24cbd766bb35db412f4be2c75b8bb" + integrity sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ== + dependencies: + bindings "^1.5.0" + prebuild-install "^7.1.1" + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -11549,6 +11574,24 @@ cacheable-lookup@^5.0.3: resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== +cacheable-lookup@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" + integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== + +cacheable-request@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-12.0.1.tgz#e6f473b5b76c02e72a0ec2cd44c7cfb7c751d7c5" + integrity sha512-Yo9wGIQUaAfIbk+qY0X4cDQgCosecfBe3V9NSyeY4qPC2SAkbCS4Xj79VP8WOzitpJUZKc/wsRCYF5ariDIwkg== + dependencies: + "@types/http-cache-semantics" "^4.0.4" + get-stream "^9.0.1" + http-cache-semantics "^4.1.1" + keyv "^4.5.4" + mimic-response "^4.0.0" + normalize-url "^8.0.1" + responselike "^3.0.0" + cacheable-request@^2.1.1: version "2.1.4" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" @@ -13899,7 +13942,7 @@ defer-to-connect@^1.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== -defer-to-connect@^2.0.0: +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== @@ -14625,13 +14668,13 @@ electron-to-chromium@^1.5.173: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.174.tgz#c7d273755d4dc9bc4f1d192f6f2092bee42771f3" integrity sha512-HE43yYdUUiJVjewV2A9EP8o89Kb4AqMKplMQP2IxEPUws1Etu/ZkdsgUDabUZ/WmbP4ZbvJDOcunvbBUPPIfmw== -electron@33.2.1: - version "33.2.1" - resolved "https://registry.yarnpkg.com/electron/-/electron-33.2.1.tgz#d0d7bba7a7abf4f14881d0a6e03c498b301a2d5f" - integrity sha512-SG/nmSsK9Qg1p6wAW+ZfqU+AV8cmXMTIklUL18NnOKfZLlum4ZsDoVdmmmlL39ZmeCaq27dr7CgslRPahfoVJg== +electron@36.4.0: + version "36.4.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-36.4.0.tgz#9463bf5fa7565ae7be3a274f7f6a46359bcfe74d" + integrity sha512-LLOOZEuW5oqvnjC7HBQhIqjIIJAZCIFjQxltQGLfEC7XFsBoZgQ3u3iFj+Kzw68Xj97u1n57Jdt7P98qLvUibQ== dependencies: "@electron/get" "^2.0.0" - "@types/node" "^20.9.0" + "@types/node" "^22.7.7" extract-zip "^2.0.1" elegant-spinner@^1.0.1: @@ -14865,6 +14908,11 @@ env-paths@^2.2.0, env-paths@^2.2.1: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +env-paths@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-3.0.0.tgz#2f1e89c2f6dbd3408e1b1711dd82d62e317f58da" + integrity sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A== + envinfo@7.13.0, envinfo@^7.7.3: version "7.13.0" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" @@ -16773,6 +16821,11 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data-encoder@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-4.0.2.tgz#dd286fd5f9049e8ded1d44ce427f5e29185c7c12" + integrity sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw== + form-data@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -17232,6 +17285,14 @@ get-stream@^8.0.1: resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== +get-stream@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-9.0.1.tgz#95157d21df8eb90d1647102b63039b1df60ebd27" + integrity sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA== + dependencies: + "@sec-ant/readable-stream" "^0.4.1" + is-stream "^4.0.1" + get-symbol-description@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" @@ -17534,7 +17595,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, gl once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1, glob@^8.1.0: +glob@^8.0.1: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -17758,6 +17819,23 @@ got@^11.7.0, got@^11.8.5: p-cancelable "^2.0.0" responselike "^2.0.0" +got@^14.4.5: + version "14.4.7" + resolved "https://registry.yarnpkg.com/got/-/got-14.4.7.tgz#f23644b9bc16d6f35fafdf410c18116614b922dd" + integrity sha512-DI8zV1231tqiGzOiOzQWDhsBmncFW7oQDH6Zgy6pDPrqJuVZMtoSgPLLsBZQj8Jg4JFfwoOsDA8NGtLQLnIx2g== + dependencies: + "@sindresorhus/is" "^7.0.1" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^12.0.1" + decompress-response "^6.0.0" + form-data-encoder "^4.0.2" + http2-wrapper "^2.2.1" + lowercase-keys "^3.0.0" + p-cancelable "^4.0.1" + responselike "^3.0.0" + type-fest "^4.26.1" + got@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" @@ -18534,6 +18612,14 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" +http2-wrapper@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" + integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + https-proxy-agent@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" @@ -19561,6 +19647,11 @@ is-stream@^3.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== +is-stream@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-4.0.1.tgz#375cf891e16d2e4baec250b85926cffc14720d9b" + integrity sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -20339,10 +20430,10 @@ keyv@3.0.0, keyv@^3.0.0: dependencies: json-buffer "3.0.0" -keyv@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" - integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== +keyv@^4.0.0, keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -21425,6 +21516,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + lru-cache@^10.0.0, lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2: version "10.4.3" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" @@ -21527,7 +21623,7 @@ make-error@^1, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^10.0.3, make-fetch-happen@^10.2.1: +make-fetch-happen@^10.0.3: version "10.2.1" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== @@ -21567,10 +21663,10 @@ make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: promise-retry "^2.0.1" ssri "^10.0.0" -make-fetch-happen@^14.0.0, make-fetch-happen@^14.0.1: - version "14.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-14.0.2.tgz#c7c79fa7e6f97856cb883fe96f01e02639ed425f" - integrity sha512-ByhSXJdWoBKRHKaqfmULjm4RwlL3EN9bZogHPDIuT9GHJIqHgh8FYkxpcCMsvaNTwl2VzFFYgzrGMlGsOEtGPQ== +make-fetch-happen@^14.0.0, make-fetch-happen@^14.0.1, make-fetch-happen@^14.0.3: + version "14.0.3" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz#d74c3ecb0028f08ab604011e0bc6baed483fcdcd" + integrity sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ== dependencies: "@npmcli/agent" "^3.0.0" cacache "^19.0.1" @@ -21579,7 +21675,7 @@ make-fetch-happen@^14.0.0, make-fetch-happen@^14.0.1: minipass-fetch "^4.0.0" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" - negotiator "^0.6.3" + negotiator "^1.0.0" proc-log "^5.0.0" promise-retry "^2.0.1" ssri "^12.0.0" @@ -21946,6 +22042,11 @@ mimic-response@^3.1.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== +mimic-response@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" + integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -22893,6 +22994,11 @@ negotiator@^0.6.3, negotiator@~0.6.4: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== +negotiator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a" + integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== + neo-async@^2.6.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -23007,19 +23113,12 @@ nock@13.2.9: lodash "^4.17.21" propagate "^2.0.0" -node-abi@^2.7.0: - version "2.30.1" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" - integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== +node-abi@4.9.0, node-abi@^2.7.0, node-abi@^3.3.0, node-abi@^3.45.0, node-abi@^4.2.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-4.9.0.tgz#ca6dabf7991e54bf3ba6d8d32641e1b84f305263" + integrity sha512-0isb3h+AXUblx5Iv0mnYy2WsErH+dk2e9iXJXdKAtS076Q5hP+scQhp6P4tvDeVlOBlG3ROKvkpQHtbORllq2A== dependencies: - semver "^5.4.1" - -node-abi@^3.3.0, node-abi@^3.45.0: - version "3.68.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.68.0.tgz#8f37fb02ecf4f43ebe694090dcb52e0c4cc4ba25" - integrity sha512-7vbj10trelExNjFSBm5kTvZXXa7pZyKWx9RCKIyqe6I9Ev3IzGpQoqBP3a+cOdxY+pWj6VkP28n/2wWysBHD/A== - dependencies: - semver "^7.3.5" + semver "^7.6.3" node-addon-api@^1.6.3: version "1.7.2" @@ -23036,10 +23135,10 @@ node-addon-api@^4.2.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== -node-api-version@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.2.0.tgz#5177441da2b1046a4d4547ab9e0972eed7b1ac1d" - integrity sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg== +node-api-version@^0.2.0, node-api-version@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.2.1.tgz#19bad54f6d65628cbee4e607a325e4488ace2de9" + integrity sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q== dependencies: semver "^7.3.5" @@ -23148,6 +23247,22 @@ node-gyp@^10.0.0, node-gyp@^10.1.0: tar "^6.2.1" which "^4.0.0" +node-gyp@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-11.2.0.tgz#fe2ee7f0511424d6ad70f7a0c88d7346f2fc6a6e" + integrity sha512-T0S1zqskVUSxcsSTkAsLc7xCycrRYmtDHadDinzocrThjyQCn5kMlEBSj6H4qDbgsIOSLmmlRIeb0lZXj+UArA== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + graceful-fs "^4.2.6" + make-fetch-happen "^14.0.3" + nopt "^8.0.0" + proc-log "^5.0.0" + semver "^7.3.5" + tar "^7.4.3" + tinyglobby "^0.2.12" + which "^5.0.0" + node-gyp@^9.0.0: version "9.4.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" @@ -23313,7 +23428,7 @@ normalize-url@^6.0.1: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -normalize-url@^8.0.0: +normalize-url@^8.0.0, normalize-url@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a" integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w== @@ -24158,6 +24273,11 @@ p-cancelable@^2.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== +p-cancelable@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-4.0.1.tgz#2d1edf1ab8616b72c73db41c4bc9ecdd10af640e" + integrity sha512-wBowNApzd45EIKdO1LaU+LrMBwAcjfPaYtVzV3lmfM3gf8Z4CHZsiIqlM8TZZ8okYvh5A1cP6gTfCRQtwUpaUg== + p-defer@3.0.0, p-defer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" @@ -25483,11 +25603,6 @@ prismjs@1.27.0: resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -proc-log@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" - integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== - proc-log@^4.0.0, proc-log@^4.1.0, proc-log@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" @@ -26805,10 +26920,10 @@ resize-img@^1.1.0: jpeg-js "^0.1.1" parse-png "^1.1.1" -resolve-alpn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" - integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== +resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-cwd@^3.0.0: version "3.0.0" @@ -26926,6 +27041,13 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" +responselike@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" + integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== + dependencies: + lowercase-keys "^3.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -30308,10 +30430,10 @@ type-fest@^2.12.2, type-fest@^2.13.0, type-fest@^2.3.4: resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -type-fest@^4.6.0, type-fest@^4.7.1: - version "4.25.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.25.0.tgz#b190374f969631866889bbdb01ece17ca424ee60" - integrity sha512-bRkIGlXsnGBRBQRAY56UXBm//9qH4bmJfFvq83gSz41N282df+fjy8ofcEgc1sM8geNt5cl6mC2g9Fht1cs8Aw== +type-fest@^4.26.1, type-fest@^4.6.0, type-fest@^4.7.1: + version "4.41.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== type-is@^1.6.4, type-is@~1.6.18: version "1.6.18" @@ -30516,10 +30638,10 @@ undici-types@~6.19.2: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== undici@^6.20.1: version "6.21.0"