diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..7c0b07ae --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +# Actor images build from the monorepo root (dockerContextDir in .actor/actor.json). +# Keep the context lean: ship sources + manifests + the pnpm lockfile only. +node_modules +**/node_modules +.git +.turbo +**/dist +**/storage +apify_storage +crawlee_storage +*.log +.DS_Store +.idea +.vscode diff --git a/.github/workflows/on-pull-request.yml b/.github/workflows/on-pull-request.yml index 3b02249d..21013d40 100644 --- a/.github/workflows/on-pull-request.yml +++ b/.github/workflows/on-pull-request.yml @@ -13,6 +13,7 @@ jobs: name: Build & Test if: (!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, 'docs:')) runs-on: ubuntu-22.04 + timeout-minutes: 30 steps: - name: Checkout repository @@ -38,6 +39,7 @@ jobs: lint: name: Lint runs-on: ubuntu-22.04 + timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v6 diff --git a/.github/workflows/release-generic-actors.yaml b/.github/workflows/release-generic-actors.yaml index 84e6a1f2..ba6c8296 100644 --- a/.github/workflows/release-generic-actors.yaml +++ b/.github/workflows/release-generic-actors.yaml @@ -34,6 +34,11 @@ on: type: boolean required: false default: true + sitemap-scraper: + description: apify/sitemap-extractor + type: boolean + required: false + default: true build-channel: description: Build channel type: choice @@ -95,6 +100,13 @@ jobs: development-version: '0.0' development-build-tag: development should-build: ${{ github.event.inputs.camoufox-scraper }} + # Platform actor is apify/sitemap-extractor (name in .actor/actor.json) + - actor: sitemap-scraper + stable-version: '0.1' + stable-build-tag: latest + development-version: '0.0' + development-build-tag: development + should-build: ${{ github.event.inputs.sitemap-scraper }} steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/test-e2e.yaml b/.github/workflows/test-e2e.yaml index 404d2d93..4b015e3e 100644 --- a/.github/workflows/test-e2e.yaml +++ b/.github/workflows/test-e2e.yaml @@ -13,6 +13,7 @@ jobs: build_and_test: name: Build & Test runs-on: ubuntu-22.04 + timeout-minutes: 60 steps: - name: Cancel Workflow Action @@ -40,6 +41,11 @@ jobs: - name: Install pnpm and dependencies uses: apify/actions/pnpm-install@v1.1.2 + - name: Install browsers + run: | + pnpm exec puppeteer browsers install chrome + pnpm exec playwright install chromium + - name: Build run: pnpm ci:build diff --git a/.gitignore b/.gitignore index b5a464c7..6c3c6516 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ pids .vscode yarn.lock .yarn +# npm locks are generated locally in actor dirs (the monorepo uses pnpm-lock.yaml) tmp jsconfig.json types diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0342fa25..e373a9c7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,14 +14,14 @@ Please provide steps to reproduce if you found a bug or ideally fork the reposit Before you submit your pull request, consider the following guidelines: -- Search [GitHub](https://github.com/apify/apify-sdk-js/pulls) for an open or closed PR that relates to your submission. You don't want to duplicate effort. +- Search [GitHub](https://github.com/apify/actor-scraper/pulls) for an open or closed PR that relates to your submission. You don't want to duplicate effort. -- Fork the project and install NPM dependencies. +- Fork the project and install dependencies with pnpm. - Run tests before you start working, to be sure they all pass and your setup is working correctly: ```sh - npm run test + pnpm test ``` - Be sure to **include appropriate test cases**. Tests help make it clear what the PR is fixing and also make sure the changes won't break over time. diff --git a/package.json b/package.json index fa8314cc..2f446f3b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "apify-sdk-js", + "name": "actor-scraper", "private": true, - "description": "Apify SDK monorepo", + "description": "Apify generic scrapers monorepo", "keywords": [ "apify", "headless", @@ -23,12 +23,12 @@ "license": "Apache-2.0", "repository": { "type": "git", - "url": "git+https://github.com/apify/apify-ts" + "url": "git+https://github.com/apify/actor-scraper.git" }, "bugs": { - "url": "https://github.com/apify/apify-ts/issues" + "url": "https://github.com/apify/actor-scraper/issues" }, - "homepage": "https://sdk.apify.com", + "homepage": "https://github.com/apify/actor-scraper", "scripts": { "prepare": "husky", "prepublishOnly": "turbo run copy", @@ -61,7 +61,7 @@ "@apify/tsconfig": "^0.1.2", "@commitlint/config-conventional": "^20.0.0", "@isaacs/brace-expansion": "^5.0.1", - "@playwright/browser-chromium": "^1.46.0", + "@playwright/browser-chromium": "^1.61.0", "@types/content-type": "^1.1.8", "@types/fs-extra": "^11.0.4", "@types/node": "^24.0.0", @@ -81,8 +81,8 @@ "oxfmt": "0.46.0", "oxlint": "1.62.0", "oxlint-tsgolint": "0.22.0", - "playwright": "^1.46.0", - "puppeteer": "^24.0.0", + "playwright": "^1.61.0", + "puppeteer": "^25.1.0", "rimraf": "^6.0.1", "tsx": "^4.16.5", "turbo": "2.9.1", diff --git a/packages/actor-scraper/camoufox-scraper/.actor/actor.json b/packages/actor-scraper/camoufox-scraper/.actor/actor.json index 3606f908..bdcd2843 100644 --- a/packages/actor-scraper/camoufox-scraper/.actor/actor.json +++ b/packages/actor-scraper/camoufox-scraper/.actor/actor.json @@ -3,6 +3,8 @@ "name": "camoufox-scraper", "version": "0.1", "buildTag": "latest", + "dockerContextDir": "../../../..", + "dockerfile": "../Dockerfile", "storages": { "dataset": { "actorSpecification": 1, diff --git a/packages/actor-scraper/camoufox-scraper/.dockerignore b/packages/actor-scraper/camoufox-scraper/.dockerignore index d421f7a7..2a4de256 100644 --- a/packages/actor-scraper/camoufox-scraper/.dockerignore +++ b/packages/actor-scraper/camoufox-scraper/.dockerignore @@ -10,3 +10,5 @@ dist # installed files node_modules + +# local npm lock is a workspace-link lock; it breaks the isolated build (the platform builds without it) diff --git a/packages/actor-scraper/camoufox-scraper/Dockerfile b/packages/actor-scraper/camoufox-scraper/Dockerfile index a58adf7a..9bc3d550 100644 --- a/packages/actor-scraper/camoufox-scraper/Dockerfile +++ b/packages/actor-scraper/camoufox-scraper/Dockerfile @@ -1,31 +1,40 @@ +# Build context is the monorepo root (set via dockerContextDir in .actor/actor.json), +# so the build can use the pnpm workspace lockfile for a deterministic install. FROM apify/actor-node-playwright-camoufox:22 AS builder -COPY --chown=myuser package*.json ./ +# The browser base runs as `myuser`; the build stage needs root for corepack + a writable workdir. +USER root +WORKDIR /app -RUN npm install --include=dev --audit=false +RUN corepack enable -COPY --chown=myuser . ./ +# Browsers ship with the base image; never let an npm postinstall download them. +# puppeteer is pulled transitively via @crawlee/browser-pool even for non-puppeteer actors. +ENV PUPPETEER_SKIP_DOWNLOAD=true \ + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 -RUN npm run build +# Whole workspace (root .dockerignore keeps node_modules/.git/dist out of the context). +COPY . ./ -FROM apify/actor-node-playwright-camoufox:22 +# Deterministic install (frozen lockfile, honors minimumReleaseAge) of the actor + its workspace deps. +RUN pnpm install --frozen-lockfile --filter actor-camoufox-scraper... -COPY --from=builder --chown=myuser /home/myuser/dist ./dist +# Build the actor and its workspace dependency @apify/scraper-tools. +RUN pnpm --filter actor-camoufox-scraper... build -COPY --chown=myuser package*.json ./ +# Self-contained production bundle; inject-workspace-packages copies the built +# @apify/scraper-tools (a runtime workspace dep) into node_modules instead of symlinking it. +RUN pnpm config set inject-workspace-packages true \ + && pnpm --filter actor-camoufox-scraper deploy --prod /deploy -RUN npm --quiet set progress=false \ - && npm install --omit=dev \ - && echo "Installed NPM packages:" \ - && (npm list --omit=dev --all || true) \ - && echo "Node.js version:" \ - && node --version \ - && echo "NPM version:" \ - && npm --version \ - && rm -r ~/.npm +FROM apify/actor-node-playwright-camoufox:22 -COPY --chown=myuser . ./ +# Base WORKDIR is /home/myuser and ships a template node_modules plus the Xvfb entrypoint. +# Drop the template's node_modules and overlay only the lean production bundle; the inherited +# ENTRYPOINT (xvfb-entrypoint.sh) still wraps CMD with Xvfb, and the bundled browser is reused. +RUN rm -rf node_modules +COPY --from=builder --chown=myuser /deploy ./ ENV APIFY_DISABLE_OUTDATED_WARNING=1 -CMD ./start_xvfb_and_run_cmd.sh && npm run start:prod --silent +CMD ["node", "dist/main.js"] diff --git a/packages/actor-scraper/camoufox-scraper/package.json b/packages/actor-scraper/camoufox-scraper/package.json index b109f7a1..ceb8325e 100644 --- a/packages/actor-scraper/camoufox-scraper/package.json +++ b/packages/actor-scraper/camoufox-scraper/package.json @@ -28,7 +28,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/apify/apify-sdk-js" + "url": "https://github.com/apify/actor-scraper" }, "author": { "name": "Apify Technologies", @@ -36,5 +36,5 @@ "url": "https://apify.com" }, "license": "Apache-2.0", - "homepage": "https://github.com/apify/apify-sdk-js" + "homepage": "https://github.com/apify/actor-scraper" } diff --git a/packages/actor-scraper/cheerio-scraper/.actor/actor.json b/packages/actor-scraper/cheerio-scraper/.actor/actor.json index 5b6865ea..26d612ef 100644 --- a/packages/actor-scraper/cheerio-scraper/.actor/actor.json +++ b/packages/actor-scraper/cheerio-scraper/.actor/actor.json @@ -3,6 +3,8 @@ "name": "cheerio-scraper", "version": "0.1", "buildTag": "latest", + "dockerContextDir": "../../../..", + "dockerfile": "../Dockerfile", "storages": { "dataset": { "actorSpecification": 1, diff --git a/packages/actor-scraper/cheerio-scraper/.dockerignore b/packages/actor-scraper/cheerio-scraper/.dockerignore index ceb85b1c..2424ba3f 100644 --- a/packages/actor-scraper/cheerio-scraper/.dockerignore +++ b/packages/actor-scraper/cheerio-scraper/.dockerignore @@ -8,3 +8,5 @@ storage # installed files node_modules + +# local npm lock is a workspace-link lock; it breaks the isolated build (the platform builds without it) diff --git a/packages/actor-scraper/cheerio-scraper/Dockerfile b/packages/actor-scraper/cheerio-scraper/Dockerfile index d166d657..082fcd04 100644 --- a/packages/actor-scraper/cheerio-scraper/Dockerfile +++ b/packages/actor-scraper/cheerio-scraper/Dockerfile @@ -1,32 +1,33 @@ +# Build context is the monorepo root (set via dockerContextDir in .actor/actor.json), +# so the build can use the pnpm workspace lockfile for a deterministic install. FROM apify/actor-node:22 AS builder -COPY package*.json ./ +WORKDIR /app -RUN npm install --include=dev --audit=false +RUN corepack enable +# Whole workspace (root .dockerignore keeps node_modules/.git/dist out of the context). COPY . ./ -RUN npm run build +# Deterministic install (frozen lockfile, honors minimumReleaseAge) of the actor + its workspace deps. +RUN pnpm install --frozen-lockfile --filter actor-cheerio-scraper... -FROM apify/actor-node:22 +# Build the actor and its workspace dependency @apify/scraper-tools. +RUN pnpm --filter actor-cheerio-scraper... build -COPY --from=builder /usr/src/app/dist ./dist +# Self-contained production bundle. inject-workspace-packages copies the built +# @apify/scraper-tools (a runtime workspace dep) into node_modules instead of symlinking it. +RUN pnpm config set inject-workspace-packages true \ + && pnpm --filter actor-cheerio-scraper deploy --prod /deploy -COPY package*.json ./ +FROM apify/actor-node:22 -RUN rm -rf node_modules \ - && npm --quiet set progress=false \ - && npm install --omit=dev --omit=optional \ - && echo "Installed NPM packages:" \ - && (npm list --omit=dev --all || true) \ - && echo "Node.js version:" \ - && node --version \ - && echo "NPM version:" \ - && npm --version \ - && rm -r ~/.npm +WORKDIR /usr/src/app -COPY . ./ +# Replace the base image's template with only the lean production bundle. +RUN find /usr/src/app -mindepth 1 -delete +COPY --from=builder /deploy ./ ENV APIFY_DISABLE_OUTDATED_WARNING=1 -CMD npm run start:prod --silent +CMD ["node", "dist/main.js"] diff --git a/packages/actor-scraper/cheerio-scraper/README.md b/packages/actor-scraper/cheerio-scraper/README.md index 8370736d..2ade93fd 100644 --- a/packages/actor-scraper/cheerio-scraper/README.md +++ b/packages/actor-scraper/cheerio-scraper/README.md @@ -183,7 +183,7 @@ async function pageFunction(context) { } ``` -The code runs in [Node.js 16](https://nodejs.org/) and the function accepts a single argument, the `context` object, whose properties are listed below. +The code runs in [Node.js 22](https://nodejs.org/) and the function accepts a single argument, the `context` object, whose properties are listed below. The return value of the page function is an object (or an array of objects) representing the data extracted from the web page. The return value must be stringify-able to JSON, i.e. it can only contain basic types and no circular references. If you prefer not to extract any data from the page and skip it in the clean results, simply return `null` or `undefined`. diff --git a/packages/actor-scraper/cheerio-scraper/package.json b/packages/actor-scraper/cheerio-scraper/package.json index 761742d8..2a54a319 100644 --- a/packages/actor-scraper/cheerio-scraper/package.json +++ b/packages/actor-scraper/cheerio-scraper/package.json @@ -26,7 +26,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/apify/apify-sdk-js" + "url": "https://github.com/apify/actor-scraper" }, "author": { "name": "Apify Technologies", @@ -38,5 +38,5 @@ "Ondra Urban " ], "license": "Apache-2.0", - "homepage": "https://github.com/apify/apify-sdk-js" + "homepage": "https://github.com/apify/actor-scraper" } diff --git a/packages/actor-scraper/jsdom-scraper/.actor/actor.json b/packages/actor-scraper/jsdom-scraper/.actor/actor.json index 9c0ee735..8006d165 100644 --- a/packages/actor-scraper/jsdom-scraper/.actor/actor.json +++ b/packages/actor-scraper/jsdom-scraper/.actor/actor.json @@ -3,6 +3,8 @@ "name": "jsdom-scraper", "version": "0.1", "buildTag": "latest", + "dockerContextDir": "../../../..", + "dockerfile": "../Dockerfile", "storages": { "dataset": { "actorSpecification": 1, diff --git a/packages/actor-scraper/jsdom-scraper/.dockerignore b/packages/actor-scraper/jsdom-scraper/.dockerignore index ceb85b1c..2424ba3f 100644 --- a/packages/actor-scraper/jsdom-scraper/.dockerignore +++ b/packages/actor-scraper/jsdom-scraper/.dockerignore @@ -8,3 +8,5 @@ storage # installed files node_modules + +# local npm lock is a workspace-link lock; it breaks the isolated build (the platform builds without it) diff --git a/packages/actor-scraper/jsdom-scraper/Dockerfile b/packages/actor-scraper/jsdom-scraper/Dockerfile index 54e0f35f..40c84bce 100644 --- a/packages/actor-scraper/jsdom-scraper/Dockerfile +++ b/packages/actor-scraper/jsdom-scraper/Dockerfile @@ -1,29 +1,33 @@ +# Build context is the monorepo root (set via dockerContextDir in .actor/actor.json), +# so the build can use the pnpm workspace lockfile for a deterministic install. FROM apify/actor-node:22 AS builder -COPY package*.json ./ +WORKDIR /app -RUN npm install --include=dev --audit=false +RUN corepack enable +# Whole workspace (root .dockerignore keeps node_modules/.git/dist out of the context). COPY . ./ -RUN npm run build +# Deterministic install (frozen lockfile, honors minimumReleaseAge) of the actor + its workspace deps. +RUN pnpm install --frozen-lockfile --filter actor-jsdom-scraper... -FROM apify/actor-node:22 +# Build the actor and its workspace dependency @apify/scraper-tools. +RUN pnpm --filter actor-jsdom-scraper... build + +# Self-contained production bundle; inject-workspace-packages copies the built +# @apify/scraper-tools (a runtime workspace dep) into node_modules instead of symlinking it. +RUN pnpm config set inject-workspace-packages true \ + && pnpm --filter actor-jsdom-scraper deploy --prod /deploy -COPY --from=builder /usr/src/app/dist ./dist +FROM apify/actor-node:22 -COPY package*.json ./ +WORKDIR /usr/src/app -RUN npm --quiet set progress=false \ - && npm install --omit=dev --omit=optional \ - && echo "Installed NPM packages:" \ - && (npm list --omit=dev --all || true) \ - && echo "Node.js version:" \ - && node --version \ - && echo "NPM version:" \ - && npm --version \ - && rm -r ~/.npm +# Replace the base image's template with only the lean production bundle. +RUN find /usr/src/app -mindepth 1 -delete +COPY --from=builder /deploy ./ -COPY . ./ +ENV APIFY_DISABLE_OUTDATED_WARNING=1 -CMD npm run start:prod --silent +CMD ["node", "dist/main.js"] diff --git a/packages/actor-scraper/jsdom-scraper/README.md b/packages/actor-scraper/jsdom-scraper/README.md index d9162c80..d2441f7f 100644 --- a/packages/actor-scraper/jsdom-scraper/README.md +++ b/packages/actor-scraper/jsdom-scraper/README.md @@ -150,7 +150,7 @@ async function pageFunction(context) { } ``` -The code runs in [Node.js 16](https://nodejs.org/) and the function accepts a single argument, the `context` object, whose properties are listed below. +The code runs in [Node.js 22](https://nodejs.org/) and the function accepts a single argument, the `context` object, whose properties are listed below. The return value of the page function is an object (or an array of objects) representing the data extracted from the web page. The return value must be stringify-able to JSON, i.e. it can only contain basic types and no circular references. If you prefer not to extract any data from the page and skip it in the clean results, simply return `null` or `undefined`. diff --git a/packages/actor-scraper/jsdom-scraper/package.json b/packages/actor-scraper/jsdom-scraper/package.json index 71736154..686c49f6 100644 --- a/packages/actor-scraper/jsdom-scraper/package.json +++ b/packages/actor-scraper/jsdom-scraper/package.json @@ -26,7 +26,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/apify/apify-sdk-js" + "url": "https://github.com/apify/actor-scraper" }, "author": { "name": "Apify Technologies", @@ -38,5 +38,5 @@ "Ondra Urban " ], "license": "Apache-2.0", - "homepage": "https://github.com/apify/apify-sdk-js" + "homepage": "https://github.com/apify/actor-scraper" } diff --git a/packages/actor-scraper/playwright-scraper/.actor/actor.json b/packages/actor-scraper/playwright-scraper/.actor/actor.json index f9eaf9ba..239f360b 100644 --- a/packages/actor-scraper/playwright-scraper/.actor/actor.json +++ b/packages/actor-scraper/playwright-scraper/.actor/actor.json @@ -3,6 +3,8 @@ "name": "playwright-scraper", "version": "0.1", "buildTag": "latest", + "dockerContextDir": "../../../..", + "dockerfile": "../Dockerfile", "storages": { "dataset": { "actorSpecification": 1, diff --git a/packages/actor-scraper/playwright-scraper/.dockerignore b/packages/actor-scraper/playwright-scraper/.dockerignore index ceb85b1c..2424ba3f 100644 --- a/packages/actor-scraper/playwright-scraper/.dockerignore +++ b/packages/actor-scraper/playwright-scraper/.dockerignore @@ -8,3 +8,5 @@ storage # installed files node_modules + +# local npm lock is a workspace-link lock; it breaks the isolated build (the platform builds without it) diff --git a/packages/actor-scraper/playwright-scraper/Dockerfile b/packages/actor-scraper/playwright-scraper/Dockerfile index 746a0d6d..34d22f22 100644 --- a/packages/actor-scraper/playwright-scraper/Dockerfile +++ b/packages/actor-scraper/playwright-scraper/Dockerfile @@ -1,31 +1,40 @@ +# Build context is the monorepo root (set via dockerContextDir in .actor/actor.json), +# so the build can use the pnpm workspace lockfile for a deterministic install. FROM apify/actor-node-playwright:22 AS builder -COPY --chown=myuser package*.json ./ +# The browser base runs as `myuser`; the build stage needs root for corepack + a writable workdir. +USER root +WORKDIR /app -RUN npm install --include=dev --audit=false +RUN corepack enable -COPY --chown=myuser . ./ +# Browsers ship with the base image; never let an npm postinstall download them. +# puppeteer is pulled transitively via @crawlee/browser-pool even for non-puppeteer actors. +ENV PUPPETEER_SKIP_DOWNLOAD=true \ + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 -RUN npm run build +# Whole workspace (root .dockerignore keeps node_modules/.git/dist out of the context). +COPY . ./ -FROM apify/actor-node-playwright:22 +# Deterministic install (frozen lockfile, honors minimumReleaseAge) of the actor + its workspace deps. +RUN pnpm install --frozen-lockfile --filter actor-playwright-scraper... -COPY --from=builder --chown=myuser /home/myuser/dist ./dist +# Build the actor and its workspace dependency @apify/scraper-tools. +RUN pnpm --filter actor-playwright-scraper... build -COPY --chown=myuser package*.json ./ +# Self-contained production bundle; inject-workspace-packages copies the built +# @apify/scraper-tools (a runtime workspace dep) into node_modules instead of symlinking it. +RUN pnpm config set inject-workspace-packages true \ + && pnpm --filter actor-playwright-scraper deploy --prod /deploy -RUN npm --quiet set progress=false \ - && npm install --omit=dev --omit=optional \ - && echo "Installed NPM packages:" \ - && (npm list --omit=dev --all || true) \ - && echo "Node.js version:" \ - && node --version \ - && echo "NPM version:" \ - && npm --version \ - && rm -r ~/.npm +FROM apify/actor-node-playwright:22 -COPY --chown=myuser . ./ +# Base WORKDIR is /home/myuser and ships a template node_modules plus the Xvfb entrypoint. +# Drop the template's node_modules and overlay only the lean production bundle; the inherited +# ENTRYPOINT (xvfb-entrypoint.sh) still wraps CMD with Xvfb, and the bundled browser is reused. +RUN rm -rf node_modules +COPY --from=builder --chown=myuser /deploy ./ ENV APIFY_DISABLE_OUTDATED_WARNING=1 -CMD ./start_xvfb_and_run_cmd.sh && npm run start:prod --silent +CMD ["node", "dist/main.js"] diff --git a/packages/actor-scraper/playwright-scraper/package.json b/packages/actor-scraper/playwright-scraper/package.json index 4bc099fb..4c0b8774 100644 --- a/packages/actor-scraper/playwright-scraper/package.json +++ b/packages/actor-scraper/playwright-scraper/package.json @@ -27,7 +27,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/apify/apify-sdk-js" + "url": "https://github.com/apify/actor-scraper" }, "author": { "name": "Apify Technologies", @@ -35,5 +35,5 @@ "url": "https://apify.com" }, "license": "Apache-2.0", - "homepage": "https://github.com/apify/apify-sdk-js" + "homepage": "https://github.com/apify/actor-scraper" } diff --git a/packages/actor-scraper/puppeteer-scraper/.actor/actor.json b/packages/actor-scraper/puppeteer-scraper/.actor/actor.json index befa39d2..d4e0190a 100644 --- a/packages/actor-scraper/puppeteer-scraper/.actor/actor.json +++ b/packages/actor-scraper/puppeteer-scraper/.actor/actor.json @@ -3,6 +3,8 @@ "name": "puppeteer-scraper", "version": "0.1", "buildTag": "latest", + "dockerContextDir": "../../../..", + "dockerfile": "../Dockerfile", "storages": { "dataset": { "actorSpecification": 1, diff --git a/packages/actor-scraper/puppeteer-scraper/.dockerignore b/packages/actor-scraper/puppeteer-scraper/.dockerignore index ceb85b1c..2424ba3f 100644 --- a/packages/actor-scraper/puppeteer-scraper/.dockerignore +++ b/packages/actor-scraper/puppeteer-scraper/.dockerignore @@ -8,3 +8,5 @@ storage # installed files node_modules + +# local npm lock is a workspace-link lock; it breaks the isolated build (the platform builds without it) diff --git a/packages/actor-scraper/puppeteer-scraper/Dockerfile b/packages/actor-scraper/puppeteer-scraper/Dockerfile index 8f126a23..a5c21026 100644 --- a/packages/actor-scraper/puppeteer-scraper/Dockerfile +++ b/packages/actor-scraper/puppeteer-scraper/Dockerfile @@ -1,31 +1,40 @@ +# Build context is the monorepo root (set via dockerContextDir in .actor/actor.json), +# so the build can use the pnpm workspace lockfile for a deterministic install. FROM apify/actor-node-puppeteer-chrome:22 AS builder -COPY --chown=myuser package*.json ./ +# The browser base runs as `myuser`; the build stage needs root for corepack + a writable workdir. +USER root +WORKDIR /app -RUN npm install --include=dev --audit=false +RUN corepack enable -COPY --chown=myuser . ./ +# Browsers ship with the base image; never let an npm postinstall download them. +# puppeteer is pulled transitively via @crawlee/browser-pool even for non-puppeteer actors. +ENV PUPPETEER_SKIP_DOWNLOAD=true \ + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 -RUN npm run build +# Whole workspace (root .dockerignore keeps node_modules/.git/dist out of the context). +COPY . ./ -FROM apify/actor-node-puppeteer-chrome:22 +# Deterministic install (frozen lockfile, honors minimumReleaseAge) of the actor + its workspace deps. +RUN pnpm install --frozen-lockfile --filter actor-puppeteer-scraper... -COPY --from=builder --chown=myuser /home/myuser/dist ./dist +# Build the actor and its workspace dependency @apify/scraper-tools. +RUN pnpm --filter actor-puppeteer-scraper... build -COPY --chown=myuser package*.json ./ +# Self-contained production bundle; inject-workspace-packages copies the built +# @apify/scraper-tools (a runtime workspace dep) into node_modules instead of symlinking it. +RUN pnpm config set inject-workspace-packages true \ + && pnpm --filter actor-puppeteer-scraper deploy --prod /deploy -RUN npm --quiet set progress=false \ - && npm install --omit=dev --omit=optional \ - && echo "Installed NPM packages:" \ - && (npm list --omit=dev --all || true) \ - && echo "Node.js version:" \ - && node --version \ - && echo "NPM version:" \ - && npm --version \ - && rm -r ~/.npm +FROM apify/actor-node-puppeteer-chrome:22 -COPY --chown=myuser . ./ +# Base WORKDIR is /home/myuser and ships a template node_modules plus the Xvfb entrypoint. +# Drop the template's node_modules and overlay only the lean production bundle; the inherited +# ENTRYPOINT (xvfb-entrypoint.sh) still wraps CMD with Xvfb, and the bundled browser is reused. +RUN rm -rf node_modules +COPY --from=builder --chown=myuser /deploy ./ ENV APIFY_DISABLE_OUTDATED_WARNING=1 -CMD ./start_xvfb_and_run_cmd.sh && npm run start:prod --silent +CMD ["node", "dist/main.js"] diff --git a/packages/actor-scraper/puppeteer-scraper/package.json b/packages/actor-scraper/puppeteer-scraper/package.json index e1d06fae..04e89d38 100644 --- a/packages/actor-scraper/puppeteer-scraper/package.json +++ b/packages/actor-scraper/puppeteer-scraper/package.json @@ -25,7 +25,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/apify/apify-sdk-js" + "url": "https://github.com/apify/actor-scraper" }, "author": { "name": "Apify Technologies", @@ -37,5 +37,5 @@ "Ondra Urban " ], "license": "Apache-2.0", - "homepage": "https://github.com/apify/apify-sdk-js" + "homepage": "https://github.com/apify/actor-scraper" } diff --git a/packages/actor-scraper/sitemap-scraper/.actor/actor.json b/packages/actor-scraper/sitemap-scraper/.actor/actor.json index a4918ed5..7102cd45 100644 --- a/packages/actor-scraper/sitemap-scraper/.actor/actor.json +++ b/packages/actor-scraper/sitemap-scraper/.actor/actor.json @@ -3,6 +3,8 @@ "name": "sitemap-extractor", "version": "0.1", "buildTag": "latest", + "dockerContextDir": "../../../..", + "dockerfile": "../Dockerfile", "output": "./output_schema.json", "defaultMemoryMbytes": 4096, "minMemoryMbytes": 256, diff --git a/packages/actor-scraper/sitemap-scraper/.dockerignore b/packages/actor-scraper/sitemap-scraper/.dockerignore index ceb85b1c..2424ba3f 100644 --- a/packages/actor-scraper/sitemap-scraper/.dockerignore +++ b/packages/actor-scraper/sitemap-scraper/.dockerignore @@ -8,3 +8,5 @@ storage # installed files node_modules + +# local npm lock is a workspace-link lock; it breaks the isolated build (the platform builds without it) diff --git a/packages/actor-scraper/sitemap-scraper/Dockerfile b/packages/actor-scraper/sitemap-scraper/Dockerfile index 7a9a21d9..c458c157 100644 --- a/packages/actor-scraper/sitemap-scraper/Dockerfile +++ b/packages/actor-scraper/sitemap-scraper/Dockerfile @@ -1,32 +1,33 @@ +# Build context is the monorepo root (set via dockerContextDir in .actor/actor.json), +# so the build can use the pnpm workspace lockfile for a deterministic install. FROM apify/actor-node:22 AS builder -COPY package*.json ./ +WORKDIR /app -RUN npm install --include=dev --audit=false --force +RUN corepack enable +# Whole workspace (root .dockerignore keeps node_modules/.git/dist out of the context). COPY . ./ -RUN npm run build +# Deterministic install (frozen lockfile, honors minimumReleaseAge) of the actor + its workspace deps. +RUN pnpm install --frozen-lockfile --filter @apify/actor-sitemap-extractor... -FROM apify/actor-node:22 +# Build the actor and its workspace dependency @apify/scraper-tools. +RUN pnpm --filter @apify/actor-sitemap-extractor... build -COPY --from=builder /usr/src/app/dist ./dist +# Self-contained production bundle; inject-workspace-packages copies the built +# @apify/scraper-tools (a runtime workspace dep) into node_modules instead of symlinking it. +RUN pnpm config set inject-workspace-packages true \ + && pnpm --filter @apify/actor-sitemap-extractor deploy --prod /deploy -COPY package*.json ./ +FROM apify/actor-node:22 -RUN rm -rf node_modules \ - && npm --quiet set progress=false \ - && npm install --omit=dev --force \ - && echo "Installed NPM packages:" \ - && (npm list --omit=dev --all || true) \ - && echo "Node.js version:" \ - && node --version \ - && echo "NPM version:" \ - && npm --version \ - && rm -r ~/.npm +WORKDIR /usr/src/app -COPY . ./ +# Replace the base image's template with only the lean production bundle. +RUN find /usr/src/app -mindepth 1 -delete +COPY --from=builder /deploy ./ ENV APIFY_DISABLE_OUTDATED_WARNING=1 -CMD npm run start:prod --silent +CMD ["node", "dist/main.js"] diff --git a/packages/actor-scraper/web-scraper/.actor/actor.json b/packages/actor-scraper/web-scraper/.actor/actor.json index ac6aed72..f7fb9862 100644 --- a/packages/actor-scraper/web-scraper/.actor/actor.json +++ b/packages/actor-scraper/web-scraper/.actor/actor.json @@ -3,6 +3,8 @@ "name": "web-scraper", "version": "0.1", "buildTag": "latest", + "dockerContextDir": "../../../..", + "dockerfile": "../Dockerfile", "storages": { "dataset": { "actorSpecification": 1, diff --git a/packages/actor-scraper/web-scraper/.dockerignore b/packages/actor-scraper/web-scraper/.dockerignore index ceb85b1c..2424ba3f 100644 --- a/packages/actor-scraper/web-scraper/.dockerignore +++ b/packages/actor-scraper/web-scraper/.dockerignore @@ -8,3 +8,5 @@ storage # installed files node_modules + +# local npm lock is a workspace-link lock; it breaks the isolated build (the platform builds without it) diff --git a/packages/actor-scraper/web-scraper/Dockerfile b/packages/actor-scraper/web-scraper/Dockerfile index 8f126a23..f20aa7b5 100644 --- a/packages/actor-scraper/web-scraper/Dockerfile +++ b/packages/actor-scraper/web-scraper/Dockerfile @@ -1,31 +1,40 @@ +# Build context is the monorepo root (set via dockerContextDir in .actor/actor.json), +# so the build can use the pnpm workspace lockfile for a deterministic install. FROM apify/actor-node-puppeteer-chrome:22 AS builder -COPY --chown=myuser package*.json ./ +# The browser base runs as `myuser`; the build stage needs root for corepack + a writable workdir. +USER root +WORKDIR /app -RUN npm install --include=dev --audit=false +RUN corepack enable -COPY --chown=myuser . ./ +# Browsers ship with the base image; never let an npm postinstall download them. +# puppeteer is pulled transitively via @crawlee/browser-pool even for non-puppeteer actors. +ENV PUPPETEER_SKIP_DOWNLOAD=true \ + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 -RUN npm run build +# Whole workspace (root .dockerignore keeps node_modules/.git/dist out of the context). +COPY . ./ -FROM apify/actor-node-puppeteer-chrome:22 +# Deterministic install (frozen lockfile, honors minimumReleaseAge) of the actor + its workspace deps. +RUN pnpm install --frozen-lockfile --filter actor-web-scraper... -COPY --from=builder --chown=myuser /home/myuser/dist ./dist +# Build the actor and its workspace dependency @apify/scraper-tools. +RUN pnpm --filter actor-web-scraper... build -COPY --chown=myuser package*.json ./ +# Self-contained production bundle; inject-workspace-packages copies the built +# @apify/scraper-tools (a runtime workspace dep) into node_modules instead of symlinking it. +RUN pnpm config set inject-workspace-packages true \ + && pnpm --filter actor-web-scraper deploy --prod /deploy -RUN npm --quiet set progress=false \ - && npm install --omit=dev --omit=optional \ - && echo "Installed NPM packages:" \ - && (npm list --omit=dev --all || true) \ - && echo "Node.js version:" \ - && node --version \ - && echo "NPM version:" \ - && npm --version \ - && rm -r ~/.npm +FROM apify/actor-node-puppeteer-chrome:22 -COPY --chown=myuser . ./ +# Base WORKDIR is /home/myuser and ships a template node_modules plus the Xvfb entrypoint. +# Drop the template's node_modules and overlay only the lean production bundle; the inherited +# ENTRYPOINT (xvfb-entrypoint.sh) still wraps CMD with Xvfb, and the bundled browser is reused. +RUN rm -rf node_modules +COPY --from=builder --chown=myuser /deploy ./ ENV APIFY_DISABLE_OUTDATED_WARNING=1 -CMD ./start_xvfb_and_run_cmd.sh && npm run start:prod --silent +CMD ["node", "dist/main.js"] diff --git a/packages/actor-scraper/web-scraper/package.json b/packages/actor-scraper/web-scraper/package.json index 3b7343e3..5bd4e5d4 100644 --- a/packages/actor-scraper/web-scraper/package.json +++ b/packages/actor-scraper/web-scraper/package.json @@ -30,7 +30,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/apify/apify-sdk-js" + "url": "https://github.com/apify/actor-scraper" }, "author": { "name": "Apify Technologies", @@ -42,5 +42,5 @@ "Ondra Urban " ], "license": "Apache-2.0", - "homepage": "https://github.com/apify/apify-sdk-js" + "homepage": "https://github.com/apify/actor-scraper" } diff --git a/packages/scraper-tools/package.json b/packages/scraper-tools/package.json index 4d8b4564..c5f8b0b6 100644 --- a/packages/scraper-tools/package.json +++ b/packages/scraper-tools/package.json @@ -21,9 +21,10 @@ "license": "Apache-2.0", "repository": { "type": "git", - "url": "git+https://github.com/apify/apify-sdk-js" + "url": "git+https://github.com/apify/actor-scraper.git", + "directory": "packages/scraper-tools" }, - "homepage": "https://github.com/apify/apify-sdk-js", + "homepage": "https://github.com/apify/actor-scraper", "scripts": { "build": "pnpm clean && pnpm compile && pnpm copy", "clean": "rimraf ./dist", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e47499bd..81cf3958 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: ^5.0.1 version: 5.0.1 '@playwright/browser-chromium': - specifier: ^1.46.0 - version: 1.59.1 + specifier: ^1.61.0 + version: 1.61.0 '@types/content-type': specifier: ^1.1.8 version: 1.1.9 @@ -61,7 +61,7 @@ importers: version: 20.5.0(@types/node@24.12.2)(conventional-commits-parser@6.4.0)(typescript@5.9.3) crawlee: specifier: ^3.16.0 - version: 3.16.0(@types/node@24.12.2)(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + version: 3.16.0(@types/node@24.12.2)(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0) fs-extra: specifier: ^11.2.0 version: 11.3.4 @@ -90,11 +90,11 @@ importers: specifier: 0.22.0 version: 0.22.0 playwright: - specifier: ^1.46.0 - version: 1.59.1 + specifier: ^1.61.0 + version: 1.61.0 puppeteer: - specifier: ^24.0.0 - version: 24.40.0(typescript@5.9.3) + specifier: ^25.1.0 + version: 25.1.0 rimraf: specifier: ^6.0.1 version: 6.1.3 @@ -124,7 +124,7 @@ importers: version: 3.16.0 '@crawlee/playwright': specifier: ^3.14.1 - version: 3.16.0(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + version: 3.16.0(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0) '@crawlee/utils': specifier: ^3.14.1 version: 3.16.0 @@ -133,13 +133,13 @@ importers: version: 3.7.0 camoufox-js: specifier: ^0.9.0 - version: 0.9.3(playwright-core@1.59.1) + version: 0.9.3(playwright-core@1.61.0) idcac-playwright: specifier: ^0.2.0 version: 0.2.0 playwright: specifier: '*' - version: 1.59.1 + version: 1.61.0 devDependencies: '@apify/tsconfig': specifier: ^0.1.0 @@ -220,7 +220,7 @@ importers: version: 3.16.0 '@crawlee/playwright': specifier: ^3.16.0 - version: 3.16.0(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + version: 3.16.0(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0) '@crawlee/utils': specifier: ^3.16.0 version: 3.16.0 @@ -232,7 +232,7 @@ importers: version: 0.2.0 playwright: specifier: '*' - version: 1.59.1 + version: 1.61.0 devDependencies: '@apify/tsconfig': specifier: ^0.1.0 @@ -254,7 +254,7 @@ importers: version: link:../../scraper-tools '@crawlee/puppeteer': specifier: ^3.16.0 - version: 3.16.0(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + version: 3.16.0(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0) apify: specifier: ^3.2.6 version: 3.7.0 @@ -263,7 +263,7 @@ importers: version: 0.2.0 puppeteer: specifier: '*' - version: 24.40.0(typescript@5.9.3) + version: 25.1.0 devDependencies: '@apify/tsconfig': specifier: ^0.1.0 @@ -322,7 +322,7 @@ importers: version: link:../../scraper-tools '@crawlee/puppeteer': specifier: ^3.16.0 - version: 3.16.0(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + version: 3.16.0(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0) apify: specifier: ^3.2.6 version: 3.7.0 @@ -331,7 +331,7 @@ importers: version: 1.0.5 crawlee: specifier: ^3.16.0 - version: 3.16.0(@types/node@24.12.2)(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + version: 3.16.0(@types/node@24.12.2)(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0) devtools-server: specifier: ^0.0.2 version: 0.0.2 @@ -340,7 +340,7 @@ importers: version: 0.2.0 puppeteer: specifier: '*' - version: 24.40.0(typescript@5.9.3) + version: 25.1.0 devDependencies: '@apify/tsconfig': specifier: ^0.1.0 @@ -375,7 +375,7 @@ importers: devDependencies: '@crawlee/browser-pool': specifier: ^3.8.2 - version: 3.16.0(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + version: 3.16.0(playwright@1.61.0)(puppeteer@25.1.0) '@crawlee/core': specifier: ^3.8.2 version: 3.16.0 @@ -428,12 +428,16 @@ packages: '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} - '@asamuzakjp/css-color@5.1.10': - resolution: {integrity: sha512-02OhhkKtgNRuicQ/nF3TRnGsxL9wp0r3Y7VlKWyOHHGmGyvXv03y+PnymU8FKFJMTjIr1Bk8U2g1HWSLrpAHww==} + '@asamuzakjp/css-color@5.1.11': + resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@7.1.1': + resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@asamuzakjp/dom-selector@7.0.9': - resolution: {integrity: sha512-r3ElRr7y8ucyN2KdICwGsmj19RoN13CLCa/pvGydghWK6ZzeKQ+TcDjVdtEZz2ElpndM5jXw//B9CEee0mWnVg==} + '@asamuzakjp/generational-cache@1.0.1': + resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} '@asamuzakjp/nwsapi@2.3.9': @@ -679,8 +683,8 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-calc@3.2.0': - resolution: {integrity: sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==} + '@csstools/css-calc@3.2.1': + resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 @@ -693,8 +697,8 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@4.1.0': - resolution: {integrity: sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==} + '@csstools/css-color-parser@4.1.7': + resolution: {integrity: sha512-CmjJFQTFQx/U/xNJhSjCQ0ilpesPmNQ8+eOUeM/+kDOVW33qsIjeOXc27vrQDdWVkf83ZSWwtg7kXSUvKDJ8cQ==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 @@ -712,8 +716,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.3': - resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==} + '@csstools/css-syntax-patches-for-csstree@1.1.5': + resolution: {integrity: sha512-oNjBvzLq2GPZtJphCjLqXow/cHySHSgtxvKZb7OqSZ/xHgw6NWNhfad+6AB9cLeVm6eA9d/qMll3JdEHjy6M+A==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -893,8 +897,8 @@ packages: cpu: [x64] os: [win32] - '@exodus/bytes@1.15.0': - resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} + '@exodus/bytes@1.15.1': + resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: '@noble/hashes': ^1.8.0 || ^2.0.0 @@ -1571,150 +1575,155 @@ packages: cpu: [x64] os: [win32] - '@playwright/browser-chromium@1.59.1': - resolution: {integrity: sha512-XDwr0qOrzLXAuBAzg4WO/xctVMb+ldJ54yz9KCpFu8G8MVJzUVFO6BvK1tBtBl4DIoFcoFRKHgUGZT+8wOC8BQ==} + '@playwright/browser-chromium@1.61.0': + resolution: {integrity: sha512-bBGzN+jow5uQtYRDCnFv5cpyMjUYTF6WnsfRRrDXIwbaGDtdh0JdOPmlKdJH4OK7TbkrZ35cV7jhQ1zELoX5ew==} engines: {node: '>=18'} - '@puppeteer/browsers@2.13.0': - resolution: {integrity: sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==} - engines: {node: '>=18'} + '@puppeteer/browsers@3.0.4': + resolution: {integrity: sha512-HGM8iAmGTf+Y7t0373szVbTmt3d7vPkYL/1bpOkOFO0YUYLgSeuYBCzESklogNPvOBnZ/MRD5f07OkpqH1trtA==} + engines: {node: '>=22.12.0'} hasBin: true + peerDependencies: + proxy-agent: '>=8.0.1' + peerDependenciesMeta: + proxy-agent: + optional: true - '@rollup/rollup-android-arm-eabi@4.60.1': - resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} + '@rollup/rollup-android-arm-eabi@4.62.0': + resolution: {integrity: sha512-IPIQ55ythEHkfEd9jMEi32OQ7SxURsGA43JI22lj01OLZNt2NUbJX8YUHxkVWyQ6daHPNn0truF5nSj3DQp6YQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.60.1': - resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} + '@rollup/rollup-android-arm64@4.62.0': + resolution: {integrity: sha512-M6s9cr10MibETyo8JsOkq+Lo1+lU6hcvb1MApnUql5qte/5hMEgzlN8/ReIKNfRV8rrqX50W1BX9zoUhC192RA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.60.1': - resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} + '@rollup/rollup-darwin-arm64@4.62.0': + resolution: {integrity: sha512-BqCoMoIbn0keKys+dEAdBa70EtOwV1bEsQCUgU9FdiZmmMge/Zk7LlkYGqbrdHR+Frnt0E1FOanly+rlwvvQzw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.60.1': - resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} + '@rollup/rollup-darwin-x64@4.62.0': + resolution: {integrity: sha512-SIMzST3VFNXDAbeIWDWiFCNM5qncUBDWaEV7NfE7oZbDt2mgfW4MvbKdbYiGOLoM32gbTv608UMd0XktEYSD7w==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.60.1': - resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} + '@rollup/rollup-freebsd-arm64@4.62.0': + resolution: {integrity: sha512-ezjfSQMP7ArdUsbBwbQIfwAlhE84I2iVnzQNCFSveqV42q+BmKlzVpf7mxv5EchLcoWU4y6/heFzVg1F+hodUQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.60.1': - resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} + '@rollup/rollup-freebsd-x64@4.62.0': + resolution: {integrity: sha512-9+qTWGW9AZRhnUgwtTwzNwcPlL87ngkeN0LA+q1bADvmY9aNvWaF2TFW8BZgnQPYxpDI7+rMVLivcd4V737TAQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.60.1': - resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} + '@rollup/rollup-linux-arm-gnueabihf@4.62.0': + resolution: {integrity: sha512-T1dMEQhXA/jkJ/jyMIw9IovK8bSUq7A8kLIlvZTb/6YIVsp2zLavr4F3oyllHWo7eIVJRyE5n3tUjQJEbE1IuQ==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.60.1': - resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} + '@rollup/rollup-linux-arm-musleabihf@4.62.0': + resolution: {integrity: sha512-2as0LgT7qQpyceQq6VUJYnumUMUrgGQCWIiDIN9DE0/tglsk6o66uCB4f3djRawAltvfCNLyZZrsqbPA6inCsA==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.60.1': - resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} + '@rollup/rollup-linux-arm64-gnu@4.62.0': + resolution: {integrity: sha512-bVURMg+6eNN9C/yc0aVjooZcwTTtYF4YW3xta5pP0//r3o1V8gXEHXWCndj47w/HhwsFroZrFhR+6uQP5T0n0g==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.60.1': - resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} + '@rollup/rollup-linux-arm64-musl@4.62.0': + resolution: {integrity: sha512-Ful8pM/2yYI83PViWdFdpZhdI8HJ5qsXANe5atypbHDf+KIBBDsZsbyy8hbXnULVvW9NsTh5DHwbcBftyLTfiw==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.60.1': - resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} + '@rollup/rollup-linux-loong64-gnu@4.62.0': + resolution: {integrity: sha512-9Gp/DgrkzfUBmNPVTyPTvay+4xEP7M/clXpj3efXBcm6uTIVIgDg4rqUpqKXvLEuFRVuEpSAOkhgNeecvaZ4Cg==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.60.1': - resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} + '@rollup/rollup-linux-loong64-musl@4.62.0': + resolution: {integrity: sha512-m9tsJz54LUXkSYM8+8PG81B9IKK5r+2T0clMq4QrS16xFosufU7firBDAZEsDheDs7wTlP7h3++S7lMsU955HA==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.60.1': - resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} + '@rollup/rollup-linux-ppc64-gnu@4.62.0': + resolution: {integrity: sha512-3UvJ5PNVU16aJf6M3tFI24pWzAl2/ynfbyRN3ICyQajK1lSkrnVYNnLz3v04J32qKa0FczJc22zeToc0lr2A3w==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.60.1': - resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} + '@rollup/rollup-linux-ppc64-musl@4.62.0': + resolution: {integrity: sha512-vRWUAbYLGHBZS6Q8Msb2sfnf1fvJf+47t8l/TwOerM2qArzy+IeNMTHrYLHXh95h8MoatPHI5hhSZNs+mGXKPg==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.60.1': - resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} + '@rollup/rollup-linux-riscv64-gnu@4.62.0': + resolution: {integrity: sha512-c00T5SYENHAt86cfW47URaP3Us5vLC/4QO7GYud1G5VNRffCwwCuBspwqYrriuJB+5m0WFzClCn9wed0FBjKvg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.60.1': - resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} + '@rollup/rollup-linux-riscv64-musl@4.62.0': + resolution: {integrity: sha512-krrCDilhXOwFkSkO3Wm9I/f9H0L92XHHwy2fwxjukxIbh0dem8gZqOW5Y8BsHrpJv5qwlRBV+Wl4ZFyRWhUpwg==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.60.1': - resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} + '@rollup/rollup-linux-s390x-gnu@4.62.0': + resolution: {integrity: sha512-7pfYFSTc4/rUC/FtAI0Qp6QthDBCIi6/AuP1xYqFk5vanI6KnL5dWKP60OM/05LOsbwTmIcvr6eXC4CJuJ75IA==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.60.1': - resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} + '@rollup/rollup-linux-x64-gnu@4.62.0': + resolution: {integrity: sha512-7SDIalKeIpG0Ifogbbdn58HmSotYMlf23K3dCJEmiVd9Fg36Vmni82iPQec27N3wY4Bvbxftkxz6vSx9OcouTg==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.60.1': - resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} + '@rollup/rollup-linux-x64-musl@4.62.0': + resolution: {integrity: sha512-eRZevouTH2i1HeAVLqJuLnt256krQkGY0TN6WsTmsIhuzbh457HuWDMakKwmi0Cjadux983CoSr8Lim2QhUIFw==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.60.1': - resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} + '@rollup/rollup-openbsd-x64@4.62.0': + resolution: {integrity: sha512-3oVS7FLGa4U1qcvao9ylGxrjXZyUQqR8UwxEcnUEyPX53O/C/mKDZegNXTdHCP+h3e6ta/f1EN38Yif1mmZHYg==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.60.1': - resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} + '@rollup/rollup-openharmony-arm64@4.62.0': + resolution: {integrity: sha512-yTB9TgfWj5wHe5QgktAgXTLLot1gvEjl1NiPPAUiCs4oPrIWFl5V4nC3GrkNdj9LaAU4s94nVrGbGOCqUpyWsg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.60.1': - resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} + '@rollup/rollup-win32-arm64-msvc@4.62.0': + resolution: {integrity: sha512-5LOhoaesY3doG1c+ac/2JtgREpKoJr5bUHH8tKY0V8di7+uSV6BwLs2PlR0/yzefGOkR+wE7ZolZphHCsyG5Rw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.60.1': - resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} + '@rollup/rollup-win32-ia32-msvc@4.62.0': + resolution: {integrity: sha512-yYkWHhmbhRTWTnWos5HC4GcPQfjlzzCNbM9e/+GXrLuaBXYA3qSDR9f0Vgufd5S8yX81U8jPKp7ZnAjZFMtRnw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.60.1': - resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} + '@rollup/rollup-win32-x64-gnu@4.62.0': + resolution: {integrity: sha512-SoTb6lPg25xZlA2ibwQ++ahCCnH+FP0qmEuafMJ4gznZKOlXioKEAeJLgCrqjM98ACziXM9V1amFjICVL4IFoA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.60.1': - resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} + '@rollup/rollup-win32-x64-msvc@4.62.0': + resolution: {integrity: sha512-5L+T1fMX4RIEBoZzT0+sQ0PhTS36NULFmMXtl1TZo44TMAROIMHbZufSOjVWt/Y622BtxgxtaNOokbTDvfsrZA==} cpu: [x64] os: [win32] @@ -1858,6 +1867,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} @@ -1891,9 +1903,6 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@vitest/expect@4.1.4': resolution: {integrity: sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww==} @@ -2055,14 +2064,6 @@ packages: axios@1.15.0: resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} - b4a@1.8.0: - resolution: {integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==} - peerDependencies: - react-native-b4a: '*' - peerDependenciesMeta: - react-native-b4a: - optional: true - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2070,47 +2071,6 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - bare-events@2.8.2: - resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} - peerDependencies: - bare-abort-controller: '*' - peerDependenciesMeta: - bare-abort-controller: - optional: true - - bare-fs@4.7.0: - resolution: {integrity: sha512-xzqKsCFxAek9aezYhjJuJRXBIaYlg/0OGDTZp+T8eYmYMlm66cs6cYko02drIyjN2CBbi+I6L7YfXyqpqtKRXA==} - engines: {bare: '>=1.16.0'} - peerDependencies: - bare-buffer: '*' - peerDependenciesMeta: - bare-buffer: - optional: true - - bare-os@3.8.7: - resolution: {integrity: sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==} - engines: {bare: '>=1.14.0'} - - bare-path@3.0.0: - resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - - bare-stream@2.13.0: - resolution: {integrity: sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==} - peerDependencies: - bare-abort-controller: '*' - bare-buffer: '*' - bare-events: '*' - peerDependenciesMeta: - bare-abort-controller: - optional: true - bare-buffer: - optional: true - bare-events: - optional: true - - bare-url@2.4.0: - resolution: {integrity: sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -2169,9 +2129,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -2273,8 +2230,9 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - chromium-bidi@14.0.0: - resolution: {integrity: sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==} + chromium-bidi@16.0.1: + resolution: {integrity: sha512-J63PGu/9PpeCwLIcKYyzWP6yaVL5pxuBc0shlYCYM8BaAkmlwiQboXO1iNbOgSDbVklEyYFfNEcHD8oOAWacUA==} + engines: {node: '>=20.19.0 <22.0.0 || >=22.12.0'} peerDependencies: devtools-protocol: '*' @@ -2621,12 +2579,12 @@ packages: detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - devtools-protocol@0.0.1581282: - resolution: {integrity: sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==} - devtools-protocol@0.0.1612613: resolution: {integrity: sha512-hp32aOyalF3vGZiTPA3CiKCgpIH7QOj+S0dRVMmEReagtmWQYigiCQWp7OGWrgaW2IHNlSzCwfDneZe16DlBCQ==} + devtools-protocol@0.0.1624250: + resolution: {integrity: sha512-YFAat/lOiIk0ARmBweG+ygrEcbZrq5B9urRyUoeQKp53MlidHXE2TmTbxKcaXoQj7u/aX+jebDO4BW55rs0WwA==} + devtools-server@0.0.2: resolution: {integrity: sha512-ZHfQVaJelu0dwEYf26jyppuDwpC0oyOkqzoGEnHhSa4mC0Y3WiWAxsMTBzDao/iLd15+0XlYCJxLilK2uALjvQ==} @@ -2713,6 +2671,10 @@ packages: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -2794,9 +2756,6 @@ packages: eventemitter3@5.0.4: resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} - events-universal@1.0.1: - resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} - execa@5.0.0: resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} engines: {node: '>=10'} @@ -2812,11 +2771,6 @@ packages: exponential-backoff@3.1.3: resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2824,9 +2778,6 @@ packages: resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==} engines: {node: '>=6.0.0'} - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -2837,9 +2788,6 @@ packages: fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -2987,10 +2935,6 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - get-stream@6.0.0: resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==} engines: {node: '>=10'} @@ -3622,6 +3566,10 @@ packages: resolution: {integrity: sha512-tNcU3cLH7toloAzhOOrBDhjzgbxpyuYvkf+BPPnnJCdc5EIcdJ8JcT+SglvCQKKyZ6m9dVXtCVlJcA6csxKdEA==} engines: {node: ^20.17.0 || >=22.9.0} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3713,6 +3661,10 @@ packages: resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} engines: {node: 20 || >=22} + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + engines: {node: 20 || >=22} + lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -3904,6 +3856,10 @@ packages: resolution: {integrity: sha512-7e87vk0DdWT647wjcfEtWeMtjm+zVGqNohN/aeIymbUfjHQ2T4Sx5kM+1irVDBSloNC3CkGKxswdMoo8yhqTDg==} engines: {node: '>=10', npm: '>=6'} + modern-tar@0.7.6: + resolution: {integrity: sha512-sweCIVXzx1aIGTCdzcMlSZt1h8k5Tmk08VNAuRk3IU28XamGiOH5ypi11g6De2CH7PhYqSSnGy2A/EFhbWnVKg==} + engines: {node: '>=18.0.0'} + modify-values@1.0.1: resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} engines: {node: '>=0.10.0'} @@ -3927,6 +3883,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} @@ -4245,8 +4206,8 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - parse5@8.0.0: - resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} @@ -4281,9 +4242,6 @@ packages: pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -4307,13 +4265,13 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - playwright-core@1.59.1: - resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + playwright-core@1.61.0: + resolution: {integrity: sha512-caX7TrY3Ml6egyDX0WUcTHDxodl/b51y5wJOdCEA36QviK/s2g081hvmGs8eaE3DWb6NYZQ6BjO/QkNRPenoPA==} engines: {node: '>=18'} hasBin: true - playwright@1.59.1: - resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + playwright@1.61.0: + resolution: {integrity: sha512-Z+7BeeqQPRRzklHsVFP4KTGIyMxKUmfeRA4WisM6G3/XW6nwGeX6fX9qYaDa+CiUqpOkb2f6X3nar05R3kSuJQ==} engines: {node: '>=18'} hasBin: true @@ -4321,8 +4279,8 @@ packages: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} - postcss@8.5.9: - resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} prebuild-install@7.1.3: @@ -4354,10 +4312,6 @@ packages: resolution: {integrity: sha512-QE8RApCM3IaRRxVzxrjbgNMpQEX6Wu0p0KBeoSiSEw5/bsGwZHsshF4LCxH2jp/r6BU+bqA3LrMDEYNfJnpD8Q==} engines: {node: ^18.17.0 || >=20.5.0} - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - promise-all-reject-late@1.0.1: resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} @@ -4400,13 +4354,13 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@24.40.0: - resolution: {integrity: sha512-MWL3XbUCfVgGR0gRsidzT6oKJT2QydPLhMITU6HoVWiiv4gkb6gJi3pcdAa8q4HwjBTbqISOWVP4aJiiyUJvag==} - engines: {node: '>=18'} + puppeteer-core@25.1.0: + resolution: {integrity: sha512-jKzy5y4WG6uNuFbTWgW1D7mqoT9o0nllc/6a1DGF775T1mPmgw3scdFEtEq67yVFikavQmbYq6NLfbTfxHSlqQ==} + engines: {node: '>=22.12.0'} - puppeteer@24.40.0: - resolution: {integrity: sha512-IxQbDq93XHVVLWHrAkFP7F7iHvb9o0mgfsSIMlhHb+JM+JjM1V4v4MNSQfcRWJopx9dsNOr9adYv0U5fm9BJBQ==} - engines: {node: '>=18'} + puppeteer@25.1.0: + resolution: {integrity: sha512-7L6/0JM7XStK99lIL4xQySyNEXNfII6pk0BxkI5kKBTOhR7AsoQiv067YTsE/rIXxQiq9ajlO4WcqBjS/FWK1A==} + engines: {node: '>=22.12.0'} hasBin: true queue-microtask@1.2.3: @@ -4552,8 +4506,8 @@ packages: resolution: {integrity: sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==} engines: {node: '>=10.0.0'} - rollup@4.60.1: - resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} + rollup@4.62.0: + resolution: {integrity: sha512-nc72Wgq62I7rtDV4izT5/aaS0zxy3kttkinf9586ApknY3jZO9NYsmtc24fUckA0X7Q2v+ML4a15pdUlV5V/jA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4737,9 +4691,6 @@ packages: stream-json@1.9.1: resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} - streamx@2.25.0: - resolution: {integrity: sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -4824,26 +4775,14 @@ packages: tar-fs@2.1.4: resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} - tar-fs@3.1.2: - resolution: {integrity: sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==} - tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - tar-stream@3.1.8: - resolution: {integrity: sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==} - tar@7.5.11: resolution: {integrity: sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==} engines: {node: '>=18'} - teex@1.0.1: - resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} - - text-decoder@1.2.7: - resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} - text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} @@ -4880,6 +4819,10 @@ packages: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + tinypool@2.1.0: resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} engines: {node: ^20.0.0 || >=22.0.0} @@ -5003,8 +4946,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - typed-query-selector@2.12.1: - resolution: {integrity: sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==} + typed-query-selector@2.12.2: + resolution: {integrity: sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==} typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -5040,6 +4983,10 @@ packages: resolution: {integrity: sha512-6KQ/+QxK49Z/p3HO6E5ZCZWNnCasyZLa5ExaVYyvPxUwKtbCPMKELJOqh7EqOle0t9cH/7d2TaaTRRa6Nhs4YQ==} engines: {node: '>=20.18.1'} + undici@7.28.0: + resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} + engines: {node: '>=20.18.1'} + unicorn-magic@0.3.0: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} @@ -5178,8 +5125,8 @@ packages: web-worker@1.5.0: resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==} - webdriver-bidi-protocol@0.4.1: - resolution: {integrity: sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==} + webdriver-bidi-protocol@0.4.2: + resolution: {integrity: sha512-VSV+fzfChirL3e7jay2yUC7B4HQCGtEWEg/MSSQbK+qWbqeGlRLlXTzPpYr3XGUvbpDHumWZBJxgesg4N7dbtA==} webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} @@ -5271,6 +5218,18 @@ packages: utf-8-validate: optional: true + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -5325,9 +5284,6 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -5389,20 +5345,24 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 - '@asamuzakjp/css-color@5.1.10': + '@asamuzakjp/css-color@5.1.11': dependencies: - '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@asamuzakjp/generational-cache': 1.0.1 + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.7(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 - '@asamuzakjp/dom-selector@7.0.9': + '@asamuzakjp/dom-selector@7.1.1': dependencies: + '@asamuzakjp/generational-cache': 1.0.1 '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 css-tree: 3.2.1 is-potential-custom-element-name: 1.0.1 + '@asamuzakjp/generational-cache@1.0.1': {} + '@asamuzakjp/nwsapi@2.3.9': {} '@babel/code-frame@7.29.0': @@ -5576,14 +5536,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@crawlee/browser-pool@3.16.0(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3))': + '@crawlee/browser-pool@3.16.0(playwright@1.61.0)(puppeteer@25.1.0)': dependencies: '@apify/log': 2.5.34 '@apify/timeout': 0.3.2 '@crawlee/core': 3.16.0 '@crawlee/types': 3.16.0 fingerprint-generator: 2.1.82 - fingerprint-injector: 2.1.82(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + fingerprint-injector: 2.1.82(playwright@1.61.0)(puppeteer@25.1.0) lodash.merge: 4.6.2 nanoid: 3.3.11 ow: 0.28.2 @@ -5593,24 +5553,24 @@ snapshots: tiny-typed-emitter: 2.1.0 tslib: 2.8.1 optionalDependencies: - playwright: 1.59.1 - puppeteer: 24.40.0(typescript@5.9.3) + playwright: 1.61.0 + puppeteer: 25.1.0 transitivePeerDependencies: - supports-color - '@crawlee/browser@3.16.0(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3))': + '@crawlee/browser@3.16.0(playwright@1.61.0)(puppeteer@25.1.0)': dependencies: '@apify/timeout': 0.3.2 '@crawlee/basic': 3.16.0 - '@crawlee/browser-pool': 3.16.0(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + '@crawlee/browser-pool': 3.16.0(playwright@1.61.0)(puppeteer@25.1.0) '@crawlee/types': 3.16.0 '@crawlee/utils': 3.16.0 ow: 0.28.2 tslib: 2.8.1 type-fest: 4.41.0 optionalDependencies: - playwright: 1.59.1 - puppeteer: 24.40.0(typescript@5.9.3) + playwright: 1.61.0 + puppeteer: 25.1.0 transitivePeerDependencies: - supports-color @@ -5803,13 +5763,13 @@ snapshots: proper-lockfile: 4.1.2 tslib: 2.8.1 - '@crawlee/playwright@3.16.0(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3))': + '@crawlee/playwright@3.16.0(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0)': dependencies: '@apify/datastructures': 2.0.3 '@apify/log': 2.5.34 '@apify/timeout': 0.3.2 - '@crawlee/browser': 3.16.0(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) - '@crawlee/browser-pool': 3.16.0(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + '@crawlee/browser': 3.16.0(playwright@1.61.0)(puppeteer@25.1.0) + '@crawlee/browser-pool': 3.16.0(playwright@1.61.0)(puppeteer@25.1.0) '@crawlee/core': 3.16.0 '@crawlee/types': 3.16.0 '@crawlee/utils': 3.16.0 @@ -5823,17 +5783,17 @@ snapshots: tslib: 2.8.1 optionalDependencies: idcac-playwright: 0.2.0 - playwright: 1.59.1 + playwright: 1.61.0 transitivePeerDependencies: - puppeteer - supports-color - '@crawlee/puppeteer@3.16.0(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3))': + '@crawlee/puppeteer@3.16.0(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0)': dependencies: '@apify/datastructures': 2.0.3 '@apify/log': 2.5.34 - '@crawlee/browser': 3.16.0(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) - '@crawlee/browser-pool': 3.16.0(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + '@crawlee/browser': 3.16.0(playwright@1.61.0)(puppeteer@25.1.0) + '@crawlee/browser-pool': 3.16.0(playwright@1.61.0)(puppeteer@25.1.0) '@crawlee/types': 3.16.0 '@crawlee/utils': 3.16.0 cheerio: 1.0.0-rc.12 @@ -5843,7 +5803,7 @@ snapshots: tslib: 2.8.1 optionalDependencies: idcac-playwright: 0.2.0 - puppeteer: 24.40.0(typescript@5.9.3) + puppeteer: 25.1.0 transitivePeerDependencies: - playwright - supports-color @@ -5910,7 +5870,7 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 @@ -5922,10 +5882,10 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-color-parser@4.1.7(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/color-helpers': 6.0.2 - '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 @@ -5937,7 +5897,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1)': + '@csstools/css-syntax-patches-for-csstree@1.1.5(css-tree@3.2.1)': optionalDependencies: css-tree: 3.2.1 @@ -6036,7 +5996,7 @@ snapshots: '@esbuild/win32-x64@0.27.7': optional: true - '@exodus/bytes@1.15.0': {} + '@exodus/bytes@1.15.1': {} '@gar/promise-retry@1.0.3': {} @@ -6599,98 +6559,88 @@ snapshots: '@oxlint/binding-win32-x64-msvc@1.62.0': optional: true - '@playwright/browser-chromium@1.59.1': + '@playwright/browser-chromium@1.61.0': dependencies: - playwright-core: 1.59.1 + playwright-core: 1.61.0 - '@puppeteer/browsers@2.13.0': + '@puppeteer/browsers@3.0.4': dependencies: - debug: 4.4.3 - extract-zip: 2.0.1 - progress: 2.0.3 - proxy-agent: 6.5.0 - semver: 7.7.4 - tar-fs: 3.1.2 + modern-tar: 0.7.6 yargs: 17.7.2 - transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - - react-native-b4a - - supports-color - '@rollup/rollup-android-arm-eabi@4.60.1': + '@rollup/rollup-android-arm-eabi@4.62.0': optional: true - '@rollup/rollup-android-arm64@4.60.1': + '@rollup/rollup-android-arm64@4.62.0': optional: true - '@rollup/rollup-darwin-arm64@4.60.1': + '@rollup/rollup-darwin-arm64@4.62.0': optional: true - '@rollup/rollup-darwin-x64@4.60.1': + '@rollup/rollup-darwin-x64@4.62.0': optional: true - '@rollup/rollup-freebsd-arm64@4.60.1': + '@rollup/rollup-freebsd-arm64@4.62.0': optional: true - '@rollup/rollup-freebsd-x64@4.60.1': + '@rollup/rollup-freebsd-x64@4.62.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + '@rollup/rollup-linux-arm-gnueabihf@4.62.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.60.1': + '@rollup/rollup-linux-arm-musleabihf@4.62.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.60.1': + '@rollup/rollup-linux-arm64-gnu@4.62.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.60.1': + '@rollup/rollup-linux-arm64-musl@4.62.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.60.1': + '@rollup/rollup-linux-loong64-gnu@4.62.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.60.1': + '@rollup/rollup-linux-loong64-musl@4.62.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.60.1': + '@rollup/rollup-linux-ppc64-gnu@4.62.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.60.1': + '@rollup/rollup-linux-ppc64-musl@4.62.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.60.1': + '@rollup/rollup-linux-riscv64-gnu@4.62.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.60.1': + '@rollup/rollup-linux-riscv64-musl@4.62.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.60.1': + '@rollup/rollup-linux-s390x-gnu@4.62.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.60.1': + '@rollup/rollup-linux-x64-gnu@4.62.0': optional: true - '@rollup/rollup-linux-x64-musl@4.60.1': + '@rollup/rollup-linux-x64-musl@4.62.0': optional: true - '@rollup/rollup-openbsd-x64@4.60.1': + '@rollup/rollup-openbsd-x64@4.62.0': optional: true - '@rollup/rollup-openharmony-arm64@4.60.1': + '@rollup/rollup-openharmony-arm64@4.62.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.60.1': + '@rollup/rollup-win32-arm64-msvc@4.62.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.60.1': + '@rollup/rollup-win32-ia32-msvc@4.62.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.60.1': + '@rollup/rollup-win32-x64-gnu@4.62.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.60.1': + '@rollup/rollup-win32-x64-msvc@4.62.0': optional: true '@sapphire/async-queue@1.5.5': {} @@ -6818,6 +6768,8 @@ snapshots: '@types/estree@1.0.8': {} + '@types/estree@1.0.9': {} + '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 @@ -6855,11 +6807,6 @@ snapshots: dependencies: '@types/node': 24.12.2 - '@types/yauzl@2.10.3': - dependencies: - '@types/node': 24.12.2 - optional: true - '@vitest/expect@4.1.4': dependencies: '@standard-schema/spec': 1.1.0 @@ -7067,44 +7014,10 @@ snapshots: transitivePeerDependencies: - debug - b4a@1.8.0: {} - balanced-match@1.0.2: {} balanced-match@4.0.4: {} - bare-events@2.8.2: {} - - bare-fs@4.7.0: - dependencies: - bare-events: 2.8.2 - bare-path: 3.0.0 - bare-stream: 2.13.0(bare-events@2.8.2) - bare-url: 2.4.0 - fast-fifo: 1.3.2 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - bare-os@3.8.7: {} - - bare-path@3.0.0: - dependencies: - bare-os: 3.8.7 - - bare-stream@2.13.0(bare-events@2.8.2): - dependencies: - streamx: 2.25.0 - teex: 1.0.1 - optionalDependencies: - bare-events: 2.8.2 - transitivePeerDependencies: - - react-native-b4a - - bare-url@2.4.0: - dependencies: - bare-path: 3.0.0 - base64-js@1.5.1: {} baseline-browser-mapping@2.10.18: {} @@ -7169,8 +7082,6 @@ snapshots: node-releases: 2.0.37 update-browserslist-db: 1.2.3(browserslist@4.28.2) - buffer-crc32@0.2.13: {} - buffer-from@1.1.2: {} buffer@5.7.1: @@ -7236,7 +7147,7 @@ snapshots: camelcase@5.3.1: {} - camoufox-js@0.9.3(playwright-core@1.59.1): + camoufox-js@0.9.3(playwright-core@1.61.0): dependencies: adm-zip: 0.5.17 better-sqlite3: 12.9.0 @@ -7247,7 +7158,7 @@ snapshots: impit: 0.11.0 language-tags: 2.1.0 maxmind: 5.0.6 - playwright-core: 1.59.1 + playwright-core: 1.61.0 pretty-bytes: 7.1.0 ua-parser-js: 2.0.9 xml2js: 0.6.2 @@ -7313,9 +7224,9 @@ snapshots: chownr@3.0.0: {} - chromium-bidi@14.0.0(devtools-protocol@0.0.1581282): + chromium-bidi@16.0.1(devtools-protocol@0.0.1624250): dependencies: - devtools-protocol: 0.0.1581282 + devtools-protocol: 0.0.1624250 mitt: 3.0.1 zod: 3.25.76 @@ -7515,26 +7426,26 @@ snapshots: optionalDependencies: typescript: 5.9.3 - crawlee@3.16.0(@types/node@24.12.2)(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)): + crawlee@3.16.0(@types/node@24.12.2)(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0): dependencies: '@crawlee/basic': 3.16.0 - '@crawlee/browser': 3.16.0(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) - '@crawlee/browser-pool': 3.16.0(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + '@crawlee/browser': 3.16.0(playwright@1.61.0)(puppeteer@25.1.0) + '@crawlee/browser-pool': 3.16.0(playwright@1.61.0)(puppeteer@25.1.0) '@crawlee/cheerio': 3.16.0 '@crawlee/cli': 3.16.0(@types/node@24.12.2) '@crawlee/core': 3.16.0 '@crawlee/http': 3.16.0 '@crawlee/jsdom': 3.16.0 '@crawlee/linkedom': 3.16.0 - '@crawlee/playwright': 3.16.0(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) - '@crawlee/puppeteer': 3.16.0(idcac-playwright@0.2.0)(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)) + '@crawlee/playwright': 3.16.0(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0) + '@crawlee/puppeteer': 3.16.0(idcac-playwright@0.2.0)(playwright@1.61.0)(puppeteer@25.1.0) '@crawlee/utils': 3.16.0 import-local: 3.2.0 tslib: 2.8.1 optionalDependencies: idcac-playwright: 0.2.0 - playwright: 1.59.1 - puppeteer: 24.40.0(typescript@5.9.3) + playwright: 1.61.0 + puppeteer: 25.1.0 transitivePeerDependencies: - '@types/node' - bufferutil @@ -7657,10 +7568,10 @@ snapshots: detect-node@2.1.0: {} - devtools-protocol@0.0.1581282: {} - devtools-protocol@0.0.1612613: {} + devtools-protocol@0.0.1624250: {} + devtools-server@0.0.2: dependencies: async-retry: 1.3.3 @@ -7750,6 +7661,8 @@ snapshots: entities@7.0.1: {} + entities@8.0.0: {} + env-paths@2.2.1: {} envinfo@7.13.0: {} @@ -7844,12 +7757,6 @@ snapshots: eventemitter3@5.0.4: {} - events-universal@1.0.1: - dependencies: - bare-events: 2.8.2 - transitivePeerDependencies: - - bare-abort-controller - execa@5.0.0: dependencies: cross-spawn: 7.0.6 @@ -7868,22 +7775,10 @@ snapshots: exponential-backoff@3.1.3: {} - extract-zip@2.0.1: - dependencies: - debug: 4.4.3 - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - fast-deep-equal@3.1.3: {} fast-equals@5.4.0: {} - fast-fifo@1.3.2: {} - fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -7898,10 +7793,6 @@ snapshots: dependencies: reusify: 1.1.0 - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 @@ -7955,13 +7846,13 @@ snapshots: header-generator: 2.1.82 tslib: 2.8.1 - fingerprint-injector@2.1.82(playwright@1.59.1)(puppeteer@24.40.0(typescript@5.9.3)): + fingerprint-injector@2.1.82(playwright@1.61.0)(puppeteer@25.1.0): dependencies: fingerprint-generator: 2.1.82 tslib: 2.8.1 optionalDependencies: - playwright: 1.59.1 - puppeteer: 24.40.0(typescript@5.9.3) + playwright: 1.61.0 + puppeteer: 25.1.0 flat@5.0.2: {} @@ -8048,10 +7939,6 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-stream@5.2.0: - dependencies: - pump: 3.0.4 - get-stream@6.0.0: {} get-stream@9.0.1: @@ -8242,7 +8129,7 @@ snapshots: html-encoding-sniffer@6.0.0: dependencies: - '@exodus/bytes': 1.15.0 + '@exodus/bytes': 1.15.1 transitivePeerDependencies: - '@noble/hashes' @@ -8614,7 +8501,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.20.0 + ws: 8.21.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -8623,22 +8510,22 @@ snapshots: jsdom@29.0.2: dependencies: - '@asamuzakjp/css-color': 5.1.10 - '@asamuzakjp/dom-selector': 7.0.9 + '@asamuzakjp/css-color': 5.1.11 + '@asamuzakjp/dom-selector': 7.1.1 '@bramus/specificity': 2.4.2 - '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1) - '@exodus/bytes': 1.15.0 + '@csstools/css-syntax-patches-for-csstree': 1.1.5(css-tree@3.2.1) + '@exodus/bytes': 1.15.1 css-tree: 3.2.1 data-urls: 7.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0 is-potential-custom-element-name: 1.0.1 - lru-cache: 11.3.5 - parse5: 8.0.0 + lru-cache: 11.5.1 + parse5: 8.0.1 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.1 - undici: 7.24.8 + undici: 7.28.0 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 @@ -8785,6 +8672,8 @@ snapshots: transitivePeerDependencies: - supports-color + lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} lines-and-columns@2.0.3: {} @@ -8877,6 +8766,8 @@ snapshots: lru-cache@11.3.5: {} + lru-cache@11.5.1: {} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 @@ -9089,6 +8980,8 @@ snapshots: mmdb-lib@3.0.2: {} + modern-tar@0.7.6: {} + modify-values@1.0.1: {} ms@2.1.3: {} @@ -9101,6 +8994,8 @@ snapshots: nanoid@3.3.11: {} + nanoid@3.3.12: {} + napi-build-utils@2.0.0: {} negotiator@1.0.0: {} @@ -9589,9 +9484,9 @@ snapshots: dependencies: entities: 6.0.1 - parse5@8.0.0: + parse5@8.0.1: dependencies: - entities: 6.0.1 + entities: 8.0.0 path-exists@3.0.0: {} @@ -9618,8 +9513,6 @@ snapshots: dependencies: through: 2.3.8 - pend@1.2.0: {} - picocolors@1.1.1: {} picomatch@2.3.2: {} @@ -9634,11 +9527,11 @@ snapshots: dependencies: find-up: 4.1.0 - playwright-core@1.59.1: {} + playwright-core@1.61.0: {} - playwright@1.59.1: + playwright@1.61.0: dependencies: - playwright-core: 1.59.1 + playwright-core: 1.61.0 optionalDependencies: fsevents: 2.3.2 @@ -9647,9 +9540,9 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.5.9: + postcss@8.5.15: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -9684,8 +9577,6 @@ snapshots: proggy@3.0.0: {} - progress@2.0.3: {} - promise-all-reject-late@1.0.1: {} promise-call-limit@3.0.2: {} @@ -9739,38 +9630,30 @@ snapshots: punycode@2.3.1: {} - puppeteer-core@24.40.0: + puppeteer-core@25.1.0: dependencies: - '@puppeteer/browsers': 2.13.0 - chromium-bidi: 14.0.0(devtools-protocol@0.0.1581282) - debug: 4.4.3 - devtools-protocol: 0.0.1581282 - typed-query-selector: 2.12.1 - webdriver-bidi-protocol: 0.4.1 - ws: 8.20.0 + '@puppeteer/browsers': 3.0.4 + chromium-bidi: 16.0.1(devtools-protocol@0.0.1624250) + devtools-protocol: 0.0.1624250 + typed-query-selector: 2.12.2 + webdriver-bidi-protocol: 0.4.2 + ws: 8.21.0 transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - bufferutil - - react-native-b4a - - supports-color + - proxy-agent - utf-8-validate - puppeteer@24.40.0(typescript@5.9.3): + puppeteer@25.1.0: dependencies: - '@puppeteer/browsers': 2.13.0 - chromium-bidi: 14.0.0(devtools-protocol@0.0.1581282) - cosmiconfig: 9.0.1(typescript@5.9.3) - devtools-protocol: 0.0.1581282 - puppeteer-core: 24.40.0 - typed-query-selector: 2.12.1 + '@puppeteer/browsers': 3.0.4 + chromium-bidi: 16.0.1(devtools-protocol@0.0.1624250) + devtools-protocol: 0.0.1624250 + lilconfig: 3.1.3 + puppeteer-core: 25.1.0 + typed-query-selector: 2.12.2 transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - bufferutil - - react-native-b4a - - supports-color - - typescript + - proxy-agent - utf-8-validate queue-microtask@1.2.3: {} @@ -9910,35 +9793,35 @@ snapshots: robots-parser@3.0.1: {} - rollup@4.60.1: + rollup@4.62.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.60.1 - '@rollup/rollup-android-arm64': 4.60.1 - '@rollup/rollup-darwin-arm64': 4.60.1 - '@rollup/rollup-darwin-x64': 4.60.1 - '@rollup/rollup-freebsd-arm64': 4.60.1 - '@rollup/rollup-freebsd-x64': 4.60.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 - '@rollup/rollup-linux-arm-musleabihf': 4.60.1 - '@rollup/rollup-linux-arm64-gnu': 4.60.1 - '@rollup/rollup-linux-arm64-musl': 4.60.1 - '@rollup/rollup-linux-loong64-gnu': 4.60.1 - '@rollup/rollup-linux-loong64-musl': 4.60.1 - '@rollup/rollup-linux-ppc64-gnu': 4.60.1 - '@rollup/rollup-linux-ppc64-musl': 4.60.1 - '@rollup/rollup-linux-riscv64-gnu': 4.60.1 - '@rollup/rollup-linux-riscv64-musl': 4.60.1 - '@rollup/rollup-linux-s390x-gnu': 4.60.1 - '@rollup/rollup-linux-x64-gnu': 4.60.1 - '@rollup/rollup-linux-x64-musl': 4.60.1 - '@rollup/rollup-openbsd-x64': 4.60.1 - '@rollup/rollup-openharmony-arm64': 4.60.1 - '@rollup/rollup-win32-arm64-msvc': 4.60.1 - '@rollup/rollup-win32-ia32-msvc': 4.60.1 - '@rollup/rollup-win32-x64-gnu': 4.60.1 - '@rollup/rollup-win32-x64-msvc': 4.60.1 + '@rollup/rollup-android-arm-eabi': 4.62.0 + '@rollup/rollup-android-arm64': 4.62.0 + '@rollup/rollup-darwin-arm64': 4.62.0 + '@rollup/rollup-darwin-x64': 4.62.0 + '@rollup/rollup-freebsd-arm64': 4.62.0 + '@rollup/rollup-freebsd-x64': 4.62.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.62.0 + '@rollup/rollup-linux-arm-musleabihf': 4.62.0 + '@rollup/rollup-linux-arm64-gnu': 4.62.0 + '@rollup/rollup-linux-arm64-musl': 4.62.0 + '@rollup/rollup-linux-loong64-gnu': 4.62.0 + '@rollup/rollup-linux-loong64-musl': 4.62.0 + '@rollup/rollup-linux-ppc64-gnu': 4.62.0 + '@rollup/rollup-linux-ppc64-musl': 4.62.0 + '@rollup/rollup-linux-riscv64-gnu': 4.62.0 + '@rollup/rollup-linux-riscv64-musl': 4.62.0 + '@rollup/rollup-linux-s390x-gnu': 4.62.0 + '@rollup/rollup-linux-x64-gnu': 4.62.0 + '@rollup/rollup-linux-x64-musl': 4.62.0 + '@rollup/rollup-openbsd-x64': 4.62.0 + '@rollup/rollup-openharmony-arm64': 4.62.0 + '@rollup/rollup-win32-arm64-msvc': 4.62.0 + '@rollup/rollup-win32-ia32-msvc': 4.62.0 + '@rollup/rollup-win32-x64-gnu': 4.62.0 + '@rollup/rollup-win32-x64-msvc': 4.62.0 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} @@ -10110,15 +9993,6 @@ snapshots: dependencies: stream-chain: 2.2.5 - streamx@2.25.0: - dependencies: - events-universal: 1.0.1 - fast-fifo: 1.3.2 - text-decoder: 1.2.7 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - string-argv@0.3.2: {} string-comparison@1.3.0: {} @@ -10199,18 +10073,6 @@ snapshots: pump: 3.0.4 tar-stream: 2.2.0 - tar-fs@3.1.2: - dependencies: - pump: 3.0.4 - tar-stream: 3.1.8 - optionalDependencies: - bare-fs: 4.7.0 - bare-path: 3.0.0 - transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - - react-native-b4a - tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -10219,17 +10081,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - tar-stream@3.1.8: - dependencies: - b4a: 1.8.0 - bare-fs: 4.7.0 - fast-fifo: 1.3.2 - streamx: 2.25.0 - transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - - react-native-b4a - tar@7.5.11: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -10238,19 +10089,6 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 - teex@1.0.1: - dependencies: - streamx: 2.25.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - text-decoder@1.2.7: - dependencies: - b4a: 1.8.0 - transitivePeerDependencies: - - react-native-b4a - text-extensions@1.9.0: {} through2@2.0.5: @@ -10282,6 +10120,11 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + tinypool@2.1.0: {} tinyrainbow@3.1.0: {} @@ -10386,7 +10229,7 @@ snapshots: type-fest@4.41.0: {} - typed-query-selector@2.12.1: {} + typed-query-selector@2.12.2: {} typedarray@0.0.6: {} @@ -10411,6 +10254,8 @@ snapshots: undici@7.24.8: {} + undici@7.28.0: {} + unicorn-magic@0.3.0: {} universal-user-agent@6.0.1: {} @@ -10455,9 +10300,9 @@ snapshots: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.9 - rollup: 4.60.1 - tinyglobby: 0.2.16 + postcss: 8.5.15 + rollup: 4.62.0 + tinyglobby: 0.2.17 optionalDependencies: '@types/node': 24.12.2 fsevents: 2.3.3 @@ -10505,7 +10350,7 @@ snapshots: web-worker@1.5.0: {} - webdriver-bidi-protocol@0.4.1: {} + webdriver-bidi-protocol@0.4.2: {} webidl-conversions@7.0.0: {} @@ -10526,7 +10371,7 @@ snapshots: whatwg-url@16.0.1: dependencies: - '@exodus/bytes': 1.15.0 + '@exodus/bytes': 1.15.1 tr46: 6.0.0 webidl-conversions: 8.0.1 transitivePeerDependencies: @@ -10587,6 +10432,8 @@ snapshots: ws@8.20.0: {} + ws@8.21.0: {} + xml-name-validator@5.0.0: {} xml2js@0.6.2: @@ -10638,11 +10485,6 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - yocto-queue@0.1.0: {} yocto-queue@1.2.2: {}