From 0fca159db587c70efd3081fb340ef10937f3c29f Mon Sep 17 00:00:00 2001 From: Wilson Date: Mon, 6 Jan 2025 14:42:04 +0800 Subject: [PATCH] Update changes to pass test due to new changes in 0.10.20 (#5) * Update path name to oobee * Fix the failing test due to changes to decode function in oobee * Fix test failing only on docker for url with .rss Previously header was always set to text/html --------- Co-authored-by: Wilson WeeSheng Khoo --- cypress.config.ts | 12 +- package-lock.json | 1055 +++++++++++------ package.json | 2 +- .../host_websites_and_run_cypress.sh | 2 +- src/cypress/support/e2e.ts | 22 +- www/http_server_auth.py | 22 +- 6 files changed, 752 insertions(+), 363 deletions(-) diff --git a/cypress.config.ts b/cypress.config.ts index a61aa29..6048f34 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from 'cypress' -import purpleA11yInit from '@govtechsg/purple-hats' +import purpleA11yInit from '@govtechsg/oobee' import mochawesome from 'cypress-mochawesome-reporter/plugin' import { fileURLToPath } from 'url' import { dirname, resolve } from 'path' @@ -146,7 +146,7 @@ const cliOptionsCustomFlow = { h: 'no', } -const purpleA11yPath = 'node_modules/@govtechsg/purple-hats' +const purpleA11yPath = 'node_modules/@govtechsg/oobee' const purpleA11yErrorsTxtPath = `${purpleA11yPath}/errors.txt` const getBlackListedPatterns = ( @@ -229,7 +229,13 @@ export default defineConfig({ config.env.localTxtFileDirectory = localTxtFileDirectory mochawesome(on) - on('task', { + on('task', { + log(message) { + // Example: + // cy.task('log', 'This will be output to the terminal') + console.log('consoleLog:', message) + return null; + }, getPurpleA11yScripts(): string { return purpleA11y.getScripts() }, diff --git a/package-lock.json b/package-lock.json index ccda63e..3685976 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@govtechsg/purple-hats": "github:GovTechSG/purple-hats#master" + "@govtechsg/oobee": "github:GovTechSG/purple-a11y#master" }, "devDependencies": { "@types/cypress": "^1.1.3", @@ -24,9 +24,9 @@ } }, "node_modules/@apify/consts": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/@apify/consts/-/consts-2.29.0.tgz", - "integrity": "sha512-+P9voQVy9j2mq0PDGgj+Ftdd2ZTimwYdaxzdu1aHw5iQXTHHJVH9x4rjMNTdmGhZP/znExmvU1tRFEyy29Vjmg==" + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@apify/consts/-/consts-2.35.0.tgz", + "integrity": "sha512-ICUoIzyxSWuQZXtMwMxrnfogPTagQS2fDY1jgZZCikv4WF0c4a3/HKpIprHZ3lI90+jjF0r8TtEVEcWIaRgP4Q==" }, "node_modules/@apify/datastructures": { "version": "2.0.2", @@ -34,11 +34,11 @@ "integrity": "sha512-IN9A0s2SCHoZZE1tf4xKgk4fxHM5/0I/UrXhWbn/rSv7E5sA2o0NyHdwcMY2Go9f5qd+E7VAbX6WnESTE6GLeA==" }, "node_modules/@apify/log": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@apify/log/-/log-2.5.4.tgz", - "integrity": "sha512-hEP/9Fjc8A1TpzaWcEEcHUrpROcb4V03bZo1O3k3DObSG/r7+OXSUAWChdobcndmh0mn5umhz6AWbNKXbLNfzg==", + "version": "2.5.11", + "resolved": "https://registry.npmjs.org/@apify/log/-/log-2.5.11.tgz", + "integrity": "sha512-QDAFqOsZkpeV3UR9eYCGskI8rHSDnhF+hnbUea3MvfIhH5PfvbWIpdUrb7s04XnfnXbWpRSN+7TYLWBbHf+X5Q==", "dependencies": { - "@apify/consts": "^2.29.0", + "@apify/consts": "^2.35.0", "ansi-colors": "^4.1.1" } }, @@ -57,12 +57,11 @@ } }, "node_modules/@apify/pseudo_url": { - "version": "2.0.44", - "resolved": "https://registry.npmjs.org/@apify/pseudo_url/-/pseudo_url-2.0.44.tgz", - "integrity": "sha512-WgLyRo22tUdF6tk7Sm78r6rjrbwCOjC42/E4jMfvnUq64hhyWZxxU3rgiRIml6+bL/xnhxFcc7vm5To1XdLMcA==", + "version": "2.0.52", + "resolved": "https://registry.npmjs.org/@apify/pseudo_url/-/pseudo_url-2.0.52.tgz", + "integrity": "sha512-7YhvBhcKLBlM9Pz4HsvpBhO7dyFmWf1gY4xldgEgPyIwlkycP6rsqg73U2fHxb5oUaxFPk99jBIaEwmIhonSGw==", "dependencies": { - "@apify/log": "^2.5.4", - "@sapphire/shapeshift": "^3.6.0" + "@apify/log": "^2.5.11" } }, "node_modules/@apify/timeout": { @@ -71,12 +70,12 @@ "integrity": "sha512-sLIuOqfySki/7AXiQ1yZoCI07vX6aYFLgP6YaJ8e8YLn8CFsRERma/Crxcz0zyCaxhc7C7EPgcs1O+p/djZchw==" }, "node_modules/@apify/utilities": { - "version": "2.10.5", - "resolved": "https://registry.npmjs.org/@apify/utilities/-/utilities-2.10.5.tgz", - "integrity": "sha512-L0ERnLOJULDaS3+VpFssQv1JTHEjcgqkOy7+qGAWw26f3/Efii04J/VpjmWLw8r6LX8otXY5Ketw7FQvskQEGA==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@apify/utilities/-/utilities-2.11.1.tgz", + "integrity": "sha512-g0oll9k7CG+ivwQ9mZiMuEZQHUXbrO+zdPtIY5xliUrp4UmJ0mmnbf6JOk3GXOeAcZaM4Acfm7g9H18Bxih1mA==", "dependencies": { - "@apify/consts": "^2.29.0", - "@apify/log": "^2.5.4" + "@apify/consts": "^2.35.0", + "@apify/log": "^2.5.11" } }, "node_modules/@babel/runtime": { @@ -102,16 +101,16 @@ } }, "node_modules/@crawlee/basic": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/basic/-/basic-3.10.5.tgz", - "integrity": "sha512-GJq/yYc7gUDA70ogd46C7WU12ALRu2+/R2xuWMYMcXWrDnNfqlxnH68MY8+L9b4SmWuXf9ZuYk1ticmwiqRdjA==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/basic/-/basic-3.12.1.tgz", + "integrity": "sha512-kCbAGH8+mKsm6RYebNBDnqjEXaiM7ivR7HhOIcYJL5Y+wgKyAFsguhNw6yVXOvqS1nFwUMQ+fX0jZsg3nwkDuw==", "dependencies": { "@apify/log": "^2.4.0", "@apify/timeout": "^0.3.0", "@apify/utilities": "^2.7.10", - "@crawlee/core": "3.10.5", - "@crawlee/types": "3.10.5", - "@crawlee/utils": "3.10.5", + "@crawlee/core": "3.12.1", + "@crawlee/types": "3.12.1", + "@crawlee/utils": "3.12.1", "csv-stringify": "^6.2.0", "fs-extra": "^11.0.0", "got-scraping": "^4.0.0", @@ -138,9 +137,9 @@ } }, "node_modules/@crawlee/basic/node_modules/type-fest": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.21.0.tgz", - "integrity": "sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==", + "version": "4.30.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.2.tgz", + "integrity": "sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==", "engines": { "node": ">=16" }, @@ -149,15 +148,15 @@ } }, "node_modules/@crawlee/browser": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/browser/-/browser-3.10.5.tgz", - "integrity": "sha512-jkJUXU1Z8FYWSuEpgCy6xTKigNrf/7zHMfc4FHUQz4vtSWnoOyOaIVNjpRyVwX7+A6q+L74HRFp5iJCAvPeuSQ==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/browser/-/browser-3.12.1.tgz", + "integrity": "sha512-mIVpi51KQ+zrDupJaNaOSdowHY9habF87qYZHMBt0plbxSd2dy/0K6yWRT3AYqf4u0CcAHRaTLxr/Pea+VmT7Q==", "dependencies": { "@apify/timeout": "^0.3.0", - "@crawlee/basic": "3.10.5", - "@crawlee/browser-pool": "3.10.5", - "@crawlee/types": "3.10.5", - "@crawlee/utils": "3.10.5", + "@crawlee/basic": "3.12.1", + "@crawlee/browser-pool": "3.12.1", + "@crawlee/types": "3.12.1", + "@crawlee/utils": "3.12.1", "ow": "^0.28.1", "tslib": "^2.4.0", "type-fest": "^4.0.0" @@ -179,14 +178,14 @@ } }, "node_modules/@crawlee/browser-pool": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/browser-pool/-/browser-pool-3.10.5.tgz", - "integrity": "sha512-UEXnnnWeWasJfpgS8EYxKM/CUFkWZMw6pZi+OQCMN30ePvZKuyDo4vkLZ2ucZoJtD5UeSyF/DZGmvzHr42vMqQ==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/browser-pool/-/browser-pool-3.12.1.tgz", + "integrity": "sha512-OPbX8DYy/8GfjRko5LTl92aVQuIzcYPk5mE+ANK7ifXpgrmfvHP4CgB+xu/0YmdcgjZ+H2Ymtn1xDIodm4Lk1Q==", "dependencies": { "@apify/log": "^2.4.0", "@apify/timeout": "^0.3.0", - "@crawlee/core": "3.10.5", - "@crawlee/types": "3.10.5", + "@crawlee/core": "3.12.1", + "@crawlee/types": "3.12.1", "fingerprint-generator": "^2.0.6", "fingerprint-injector": "^2.0.5", "lodash.merge": "^4.6.2", @@ -215,9 +214,9 @@ } }, "node_modules/@crawlee/browser/node_modules/type-fest": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.21.0.tgz", - "integrity": "sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==", + "version": "4.30.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.2.tgz", + "integrity": "sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==", "engines": { "node": ">=16" }, @@ -226,14 +225,14 @@ } }, "node_modules/@crawlee/cheerio": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/cheerio/-/cheerio-3.10.5.tgz", - "integrity": "sha512-O/VGesrviquL4Hdnrurt2U13d8MrX42I7jnf/6C9gScwGWH6BiJmR0p7CIm0zhN8l4i95Qd78OjrfsJS8Rjt7Q==", - "dependencies": { - "@crawlee/http": "3.10.5", - "@crawlee/types": "3.10.5", - "@crawlee/utils": "3.10.5", - "cheerio": "^1.0.0-rc.12", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/cheerio/-/cheerio-3.12.1.tgz", + "integrity": "sha512-xE7eNDKuKctBd7OhAAfKtFyTvtj8ufDXmdwkv62lLh0KmbA8F7E59q3s/EdBaTSPENFmPBxrmY78/RuqZrF7cg==", + "dependencies": { + "@crawlee/http": "3.12.1", + "@crawlee/types": "3.12.1", + "@crawlee/utils": "3.12.1", + "cheerio": "1.0.0-rc.12", "htmlparser2": "^9.0.0", "tslib": "^2.4.0" }, @@ -260,11 +259,11 @@ } }, "node_modules/@crawlee/cli": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/cli/-/cli-3.10.5.tgz", - "integrity": "sha512-1NggRahtDpL5/Y2ofK3knmjGm2QignEiMx1540vMsJROP7ggYNjeBECXyyvavrZ9l/eUHRlur+pE17Loci7/kA==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/cli/-/cli-3.12.1.tgz", + "integrity": "sha512-TMObdfpVcyWg1qE7L06bvsTLDHSE6vh0YozPIq5pVBvRa/Th0E++JpK0+CFdZoGwzL6uRY3GUtR85j/PZQIBhQ==", "dependencies": { - "@crawlee/templates": "3.10.5", + "@crawlee/templates": "3.12.1", "ansi-colors": "^4.1.3", "fs-extra": "^11.0.0", "inquirer": "^8.2.4", @@ -352,9 +351,9 @@ } }, "node_modules/@crawlee/core": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/core/-/core-3.10.5.tgz", - "integrity": "sha512-L82EXDTAVZOmLbH5s7BcHCryPNGc//eiLCs0eyS1LIR7sf+dUUosfpmZyNfLNkku0Zysir/RUftqhe9JNT/evQ==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/core/-/core-3.12.1.tgz", + "integrity": "sha512-hom1ALM1Gn+ZpdFxIcQwmNjHV7mZhcOsPGIqhZuEWSETPV3lcMX67ZPs9UU3nIjsPgKuDC3FjIv6TXNu8Ga55A==", "dependencies": { "@apify/consts": "^2.20.0", "@apify/datastructures": "^2.0.0", @@ -362,11 +361,10 @@ "@apify/pseudo_url": "^2.0.30", "@apify/timeout": "^0.3.0", "@apify/utilities": "^2.7.10", - "@crawlee/memory-storage": "3.10.5", - "@crawlee/types": "3.10.5", - "@crawlee/utils": "3.10.5", + "@crawlee/memory-storage": "3.12.1", + "@crawlee/types": "3.12.1", + "@crawlee/utils": "3.12.1", "@sapphire/async-queue": "^1.5.1", - "@types/tough-cookie": "^4.0.2", "@vladfrangu/async_event_emitter": "^2.2.2", "csv-stringify": "^6.2.0", "fs-extra": "^11.0.0", @@ -374,10 +372,9 @@ "json5": "^2.2.3", "minimatch": "^9.0.0", "ow": "^0.28.1", - "stream-chain": "^2.2.5", - "stream-json": "^1.7.4", + "stream-json": "^1.8.0", "tldts": "^6.0.0", - "tough-cookie": "^4.0.0", + "tough-cookie": "^5.0.0", "tslib": "^2.4.0", "type-fest": "^4.0.0" }, @@ -398,10 +395,21 @@ "node": ">=14.14" } }, + "node_modules/@crawlee/core/node_modules/tough-cookie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", + "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@crawlee/core/node_modules/type-fest": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.21.0.tgz", - "integrity": "sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==", + "version": "4.30.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.2.tgz", + "integrity": "sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==", "engines": { "node": ">=16" }, @@ -410,17 +418,17 @@ } }, "node_modules/@crawlee/http": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/http/-/http-3.10.5.tgz", - "integrity": "sha512-4VG2Z3lh4N5CIZglAdxEE+sk1xEyZ2fi05jJmtay9Li87Z/q524fjkefL5tUqGba8p5dDWEgRO1cnoVv9sXrrg==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/http/-/http-3.12.1.tgz", + "integrity": "sha512-S/McyoD1Kb3Fx3sNNziHqBlH3Qz4Xq0fJF41TIy5uuj1EUmWI64DMU6BNx0d7EaMP7YExyhOjzUvtValPAJ/EQ==", "dependencies": { "@apify/timeout": "^0.3.0", "@apify/utilities": "^2.7.10", - "@crawlee/basic": "3.10.5", - "@crawlee/types": "3.10.5", - "@crawlee/utils": "3.10.5", + "@crawlee/basic": "3.12.1", + "@crawlee/types": "3.12.1", + "@crawlee/utils": "3.12.1", "@types/content-type": "^1.1.5", - "cheerio": "^1.0.0-rc.12", + "cheerio": "1.0.0-rc.12", "content-type": "^1.0.4", "got-scraping": "^4.0.0", "iconv-lite": "^0.6.3", @@ -434,9 +442,9 @@ } }, "node_modules/@crawlee/http/node_modules/type-fest": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.21.0.tgz", - "integrity": "sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==", + "version": "4.30.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.2.tgz", + "integrity": "sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==", "engines": { "node": ">=16" }, @@ -445,18 +453,18 @@ } }, "node_modules/@crawlee/jsdom": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/jsdom/-/jsdom-3.10.5.tgz", - "integrity": "sha512-cWJ4om0XC9+HLHmP6JgfkKrS/kgxDfqcY0nfdeSAB/JdJxylCxS8Wqu5BIj9DhK3W0/NI6vJ7nUT5tuarbGXyQ==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/jsdom/-/jsdom-3.12.1.tgz", + "integrity": "sha512-k3oi5eWOwgiJBnFvg+dlKg+4QCPOs+/h6c+p/lUXNjYsu6zKkqmLv44jqC0FRSgRdLZYzdGMSWv7jTiXshoPOg==", "dependencies": { "@apify/timeout": "^0.3.0", "@apify/utilities": "^2.7.10", - "@crawlee/http": "3.10.5", - "@crawlee/types": "3.10.5", - "@crawlee/utils": "3.10.5", + "@crawlee/http": "3.12.1", + "@crawlee/types": "3.12.1", + "@crawlee/utils": "3.12.1", "@types/jsdom": "^21.0.0", - "cheerio": "^1.0.0-rc.12", - "jsdom": "^24.0.0", + "cheerio": "1.0.0-rc.12", + "jsdom": "^25.0.0", "ow": "^0.28.2", "tslib": "^2.4.0" }, @@ -465,22 +473,19 @@ } }, "node_modules/@crawlee/jsdom/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dependencies": { - "debug": "^4.3.4" - }, + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "engines": { "node": ">= 14" } }, "node_modules/@crawlee/jsdom/node_modules/cssstyle": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", - "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", + "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", "dependencies": { - "rrweb-cssom": "^0.6.0" + "rrweb-cssom": "^0.7.1" }, "engines": { "node": ">=18" @@ -499,9 +504,9 @@ } }, "node_modules/@crawlee/jsdom/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -535,11 +540,11 @@ } }, "node_modules/@crawlee/jsdom/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -547,30 +552,30 @@ } }, "node_modules/@crawlee/jsdom/node_modules/jsdom": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.0.tgz", - "integrity": "sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==", + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", + "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", "dependencies": { - "cssstyle": "^4.0.1", + "cssstyle": "^4.1.0", "data-urls": "^5.0.0", "decimal.js": "^10.4.3", "form-data": "^4.0.0", "html-encoding-sniffer": "^4.0.0", "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.4", + "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.10", + "nwsapi": "^2.2.12", "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.0", + "rrweb-cssom": "^0.7.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.4", + "tough-cookie": "^5.0.0", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", - "ws": "^8.17.0", + "ws": "^8.18.0", "xml-name-validator": "^5.0.0" }, "engines": { @@ -585,11 +590,22 @@ } } }, - "node_modules/@crawlee/jsdom/node_modules/jsdom/node_modules/rrweb-cssom": { + "node_modules/@crawlee/jsdom/node_modules/rrweb-cssom": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==" }, + "node_modules/@crawlee/jsdom/node_modules/tough-cookie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", + "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@crawlee/jsdom/node_modules/tr46": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", @@ -624,9 +640,9 @@ } }, "node_modules/@crawlee/jsdom/node_modules/whatwg-url": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", - "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", "dependencies": { "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" @@ -644,14 +660,14 @@ } }, "node_modules/@crawlee/linkedom": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/linkedom/-/linkedom-3.10.5.tgz", - "integrity": "sha512-/VVcaClkYjITFk9yGdkO7k2sUF2hoEuBqb96eS0dcrRSp0i374LCW5yMYSOAgjSDmWKeV6/iuhDCj1zFwKNKaw==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/linkedom/-/linkedom-3.12.1.tgz", + "integrity": "sha512-2pk2XGTUkBQd4dshmpk5ji7TU8h/P9UR7BkcqIoYoRc6vtPUS0hcWVdyJjGbdZLxLh4xBx60Xw6QcE05ps5qkg==", "dependencies": { "@apify/timeout": "^0.3.0", "@apify/utilities": "^2.7.10", - "@crawlee/http": "3.10.5", - "@crawlee/types": "3.10.5", + "@crawlee/http": "3.12.1", + "@crawlee/types": "3.12.1", "linkedom": "^0.18.0", "ow": "^0.28.2", "tslib": "^2.4.0" @@ -661,12 +677,12 @@ } }, "node_modules/@crawlee/memory-storage": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/memory-storage/-/memory-storage-3.10.5.tgz", - "integrity": "sha512-Pnq8WwrWxwImN/AIZHc5xi4hKSwSEk/jjiN//jZPLLZlqPxqUzwqIMd8SIlexhAptiJ/K2LaR0y7o6VQk5trqw==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/memory-storage/-/memory-storage-3.12.1.tgz", + "integrity": "sha512-N3WqfNIgo8m5ycJvUM5BvAZoqgglwEq11HsIlAUX4AGRKfYiFLziGpkBdhm2JAaD3/VWyZeEKyWgpkRiKZXo2w==", "dependencies": { "@apify/log": "^2.4.0", - "@crawlee/types": "3.10.5", + "@crawlee/types": "3.12.1", "@sapphire/async-queue": "^1.5.0", "@sapphire/shapeshift": "^3.0.0", "content-type": "^1.0.4", @@ -694,19 +710,19 @@ } }, "node_modules/@crawlee/playwright": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/playwright/-/playwright-3.10.5.tgz", - "integrity": "sha512-u95ObQHTWfOaKR1q1CwPp2A8DW5Xl1fF1LSyhAL6OjhywBd9eYazeEoUs/WA7SG98LcNZEyT7Nh3gH3UJ08t2g==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/playwright/-/playwright-3.12.1.tgz", + "integrity": "sha512-eS6SK6Q+d/ekf6e8CsPl4oTW46OMpuZwtE5ihn1FMgf1UmVLy8+INwnhjZaoxXe8pt0iqPOzCpvnV8eWXGCQZA==", "dependencies": { "@apify/datastructures": "^2.0.0", "@apify/log": "^2.4.0", "@apify/timeout": "^0.3.1", - "@crawlee/browser": "3.10.5", - "@crawlee/browser-pool": "3.10.5", - "@crawlee/core": "3.10.5", - "@crawlee/types": "3.10.5", - "@crawlee/utils": "3.10.5", - "cheerio": "^1.0.0-rc.12", + "@crawlee/browser": "3.12.1", + "@crawlee/browser-pool": "3.12.1", + "@crawlee/core": "3.12.1", + "@crawlee/types": "3.12.1", + "@crawlee/utils": "3.12.1", + "cheerio": "1.0.0-rc.12", "idcac-playwright": "^0.1.2", "jquery": "^3.6.0", "lodash.isequal": "^4.5.0", @@ -729,17 +745,17 @@ } }, "node_modules/@crawlee/puppeteer": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/puppeteer/-/puppeteer-3.10.5.tgz", - "integrity": "sha512-YjEu01Vozn7Qy9s+Gx1qKo6VgxvC9RfPFYeUeDV9rH/6oQ5aKVudj/y2nhgpC+5Ca+ZLbzPCdfXDTHZ4TFBycg==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/puppeteer/-/puppeteer-3.12.1.tgz", + "integrity": "sha512-/aTee/XrQJdYXLUAuByKsmVAh29IfVa44kdQULxFT0ioYQVKqwzj7kBjayJKP8cEgs64ulxST4iHMaLgyPVHug==", "dependencies": { "@apify/datastructures": "^2.0.0", "@apify/log": "^2.4.0", - "@crawlee/browser": "3.10.5", - "@crawlee/browser-pool": "3.10.5", - "@crawlee/types": "3.10.5", - "@crawlee/utils": "3.10.5", - "cheerio": "^1.0.0-rc.12", + "@crawlee/browser": "3.12.1", + "@crawlee/browser-pool": "3.12.1", + "@crawlee/types": "3.12.1", + "@crawlee/utils": "3.12.1", + "cheerio": "1.0.0-rc.12", "devtools-protocol": "*", "idcac-playwright": "^0.1.2", "jquery": "^3.6.0", @@ -759,9 +775,9 @@ } }, "node_modules/@crawlee/templates": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/templates/-/templates-3.10.5.tgz", - "integrity": "sha512-ZLDecHJFO/2GQCEqf8ycRMD+VBnQRZMbukdGS135/LBS7MbV/qfAB9a9k3Z0e3d7Kjo1xA4ZmNJueqhukemlyA==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/templates/-/templates-3.12.1.tgz", + "integrity": "sha512-MAkyPew4mfpy7Ai4JYkg3IkW0jfVWUB/OhhG3jrTrXvbOmlhAMe/GWrnKHStDd+K4Vl8aHz3mDpn8H6gv5v/2Q==", "dependencies": { "ansi-colors": "^4.1.3", "inquirer": "^9.0.0", @@ -774,9 +790,9 @@ } }, "node_modules/@crawlee/types": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/types/-/types-3.10.5.tgz", - "integrity": "sha512-AnOBspUU4Cydjh/2dg3miKgHHvlTrG2Ccrfhe98y19bpD2ghteEpaJ6aiClOUH73Z9jlhaR0Ztb1mOwNp/R+8A==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/types/-/types-3.12.1.tgz", + "integrity": "sha512-KiYqRxYTB89Osy7sBbKhOSUyUusO85aGHvLLzxWAjQPrIhrY09t2kuVZhmTnjXTbgucQdMeWFrQjQuNeq8yPtA==", "dependencies": { "tslib": "^2.4.0" }, @@ -785,20 +801,20 @@ } }, "node_modules/@crawlee/utils": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@crawlee/utils/-/utils-3.10.5.tgz", - "integrity": "sha512-u8a35NmLrcXBvN2fsTBXxpBrmUADp0qcy3tsDDs4UAju+URiikEdiU0K+McX3k3A2XwcT/zJBy+x6+4Jzs3JCg==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@crawlee/utils/-/utils-3.12.1.tgz", + "integrity": "sha512-GknM4VD77coaAXkb2MPRkqYGVWHGMPUDuyBFmMZLGPnenHX7VoywZK+4Xw5o6FMLk0krPF/oAPAyD52fHv2B2Q==", "dependencies": { "@apify/log": "^2.4.0", "@apify/ps-tree": "^1.2.0", - "@crawlee/types": "3.10.5", + "@crawlee/types": "3.12.1", "@types/sax": "^1.2.7", - "cheerio": "^1.0.0-rc.12", + "cheerio": "1.0.0-rc.12", "file-type": "^19.0.0", "got-scraping": "^4.0.3", "ow": "^0.28.1", "robots-parser": "^3.0.1", - "sax": "^1.3.0", + "sax": "^1.4.1", "tslib": "^2.4.0", "whatwg-mimetype": "^4.0.0" }, @@ -864,38 +880,53 @@ "kuler": "^2.0.0" } }, - "node_modules/@govtechsg/purple-hats": { - "version": "0.10.7", - "resolved": "git+ssh://git@github.com/GovTechSG/purple-hats.git#e4d38ad204346988911c67e7177f8037ce0cdd51", - "license": "MIT", + "node_modules/@govtechsg/oobee": { + "version": "0.10.20", + "resolved": "git+ssh://git@github.com/GovTechSG/purple-a11y.git#dbc51e7ed52c0acae56005b7bacf7868daff40ca", "dependencies": { "@json2csv/node": "^7.0.3", - "axe-core": "^4.9.1", - "axios": "^1.6.2", + "@napi-rs/canvas": "^0.1.53", + "axe-core": "^4.10.2", + "axios": "^1.7.4", "cheerio": "^1.0.0-rc.12", - "crawlee": "^3.8.1", + "crawlee": "^3.11.1", "ejs": "^3.1.9", + "file-type": "^19.5.0", "fs-extra": "^11.2.0", "glob": "^10.3.10", + "https": "^1.0.0", "inquirer": "^9.2.12", "jsdom": "^21.1.2", "lodash": "^4.17.21", + "mime-types": "^2.1.35", "minimatch": "^9.0.3", "pdfjs-dist": "github:veraPDF/pdfjs-dist#v2.14.305-taggedPdf-0.1.11", - "playwright": "^1.44.1", + "playwright": "1.46.1", "prettier": "^3.1.0", "print-message": "^3.0.1", "safe-regex": "^2.1.1", + "text-readability": "^1.1.0", "typescript": "^5.4.5", "url": "^0.11.3", + "uuid": "^11.0.3", "validator": "^13.11.0", "which": "^4.0.0", "winston": "^3.11.0", "xml2js": "^0.6.2", + "xpath-to-css": "^1.2.0", "yargs": "^17.7.2" + }, + "optionalDependencies": { + "@napi-rs/canvas-darwin-arm64": "^0.1.53", + "@napi-rs/canvas-darwin-x64": "^0.1.53", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.53", + "@napi-rs/canvas-linux-arm64-musl": "0.1.53", + "@napi-rs/canvas-linux-x64-gnu": "0.1.53", + "@napi-rs/canvas-linux-x64-musl": "0.1.53", + "@napi-rs/canvas-win32-x64-msvc": "0.1.53" } }, - "node_modules/@govtechsg/purple-hats/node_modules/fs-extra": { + "node_modules/@govtechsg/oobee/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", @@ -908,7 +939,7 @@ "node": ">=14.14" } }, - "node_modules/@govtechsg/purple-hats/node_modules/isexe": { + "node_modules/@govtechsg/oobee/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", @@ -916,7 +947,19 @@ "node": ">=16" } }, - "node_modules/@govtechsg/purple-hats/node_modules/which": { + "node_modules/@govtechsg/oobee/node_modules/uuid": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz", + "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/@govtechsg/oobee/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", @@ -1049,6 +1092,251 @@ "@streamparser/json": "^0.0.20" } }, + "node_modules/@napi-rs/canvas": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.65.tgz", + "integrity": "sha512-YcFhXQcp+b2d38zFOJNbpyPHnIL7KAEkhJQ+UeeKI5IpE9B8Cpf/M6RiHPQXSsSqnYbrfFylnW49dyh2oeSblQ==", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@napi-rs/canvas-android-arm64": "0.1.65", + "@napi-rs/canvas-darwin-arm64": "0.1.65", + "@napi-rs/canvas-darwin-x64": "0.1.65", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.65", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.65", + "@napi-rs/canvas-linux-arm64-musl": "0.1.65", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.65", + "@napi-rs/canvas-linux-x64-gnu": "0.1.65", + "@napi-rs/canvas-linux-x64-musl": "0.1.65", + "@napi-rs/canvas-win32-x64-msvc": "0.1.65" + } + }, + "node_modules/@napi-rs/canvas-android-arm64": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.65.tgz", + "integrity": "sha512-ZYwqFYEKcT5Zr8lbiaJNJj/poLaeK2TncolY914r+gD2TJNeP7ZqvE7A2SX/1C9MB4E3DQEwm3YhL3WEf0x3MQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-darwin-arm64": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.65.tgz", + "integrity": "sha512-Pg1pfiJEyDIsX+V0QaJPRWvXbw5zmWAk3bivFCvt/5pwZb37/sT6E/RqPHT9NnqpDyKW6SriwY9ypjljysUA1Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-darwin-x64": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.65.tgz", + "integrity": "sha512-3Tr+/HjdJN7Z/VKIcsxV2DvDIibZCExgfYTgljCkUSFuoI7iNkOE6Dc1Q6j212EB9PeO8KmfrViBqHYT6IwWkA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.65.tgz", + "integrity": "sha512-3KP+dYObH7CVkZMZWwk1WX9jRjL+EKdQtD43H8MOI+illf+dwqLlecdQ4d9bQRIxELKJ8dyPWY4fOp/Ngufrdg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-gnu": { + "version": "0.1.53", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.53.tgz", + "integrity": "sha512-QKK+sykEiYwjwd+ogyLcpcnH38DNZ8KViBlnfEpoGA2Wa+21/cWQKfMxnbgb/rbvm5tazJinZcihFvH577WQ5g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-musl": { + "version": "0.1.53", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.53.tgz", + "integrity": "sha512-2N41U0X8RnrTKzpTtPv1ozlYkJtPsUdbfF3uP/KEd/BsULGd8Y8ghkGMS6CM+821au4ex0dPrWOOdT9wC1rSqQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.65.tgz", + "integrity": "sha512-dblWDaA59ZU8bPbkfM+riSke7sFbNZ70LEevUdI5rgiFEUzYUQlU34gSBzemTACj5rCWt1BYeu0GfkLSjNMBSw==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-gnu": { + "version": "0.1.53", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.53.tgz", + "integrity": "sha512-7XjuTvDKCODtf/vMwF43VGDrjfgwYKgS91ggdcX3UrJaBYWyWu/+eqNvNj+zdXSe/0x+YOjf5jG4m8xIXdBMQA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-musl": { + "version": "0.1.53", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.53.tgz", + "integrity": "sha512-970WEvB8vmj+uxvgdBZ+AGFV7uq9GJhXrqG5PGQ5lWciHX0P0d/OhS2F7TITgFR0LsKDQZ7XQgzMxsYOfwZ0FQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-win32-x64-msvc": { + "version": "0.1.53", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.53.tgz", + "integrity": "sha512-rLFQCSJaWg/sv54Aap9nAhaodi4Vyb4un50EgW+PNkk8icMziU6KLRKirGBdQr9ZdxnshAPeQXD1g2ArStujKA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas/node_modules/@napi-rs/canvas-linux-arm64-gnu": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.65.tgz", + "integrity": "sha512-Ka3StKz7Dq7kjTF3nNJCq43UN/VlANS7qGE3dWkn1d+tQNsCRy/wRmyt1TUFzIjRqcTFMQNRbgYq84+53UBA0A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas/node_modules/@napi-rs/canvas-linux-arm64-musl": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.65.tgz", + "integrity": "sha512-O4xMASm2JrmqYoiDyxVWi+z5C14H+oVEag2rZ5iIA67dhWqYZB+iO7wCFpBYRj31JPBR29FOsu6X9zL+DwBFdw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas/node_modules/@napi-rs/canvas-linux-x64-gnu": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.65.tgz", + "integrity": "sha512-wsp+atutw13OJXGU3DDkdngtBDoEg01IuK5xMe0L6VFPV8maGkh17CXze078OD5QJOc6kFyw3DDscMLOPF8+oA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas/node_modules/@napi-rs/canvas-linux-x64-musl": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.65.tgz", + "integrity": "sha512-odX+nN+IozWzhdj31INcHz3Iy9+EckNw+VqsZcaUxZOTu7/3FmktRNI6aC1qe5minZNv1m05YOS1FVf7fvmjlA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas/node_modules/@napi-rs/canvas-win32-x64-msvc": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.65.tgz", + "integrity": "sha512-RZQX3luWnlNWgdMnLMQ1hyfQraeAn9lnxWWVCHuUM4tAWEV8UDdeb7cMwmJW7eyt8kAosmjeHt3cylQMHOxGFg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -1059,9 +1347,9 @@ } }, "node_modules/@sapphire/async-queue": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.2.tgz", - "integrity": "sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.5.tgz", + "integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==", "engines": { "node": ">=v14.0.0", "npm": ">=7.0.0" @@ -1085,11 +1373,11 @@ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==" }, "node_modules/@sindresorhus/is": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-6.3.1.tgz", - "integrity": "sha512-FX4MfcifwJyFOI2lPoX7PQxCqx8BG1HCho7WdiXwpEQx1Ycij0JxkfYtGK7yqNScrZGSlt6RE6sw8QYoH7eKnQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.0.1.tgz", + "integrity": "sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==", "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sindresorhus/is?sponsor=1" @@ -1162,6 +1450,11 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/pluralize": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/pluralize/-/pluralize-0.0.29.tgz", + "integrity": "sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==" + }, "node_modules/@types/sax": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", @@ -1203,9 +1496,9 @@ } }, "node_modules/@vladfrangu/async_event_emitter": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.1.tgz", - "integrity": "sha512-cedU1DrzO4oliUigSAOqSgts6wEfGGSbpO1hYxvKbz8sr7a0meyP3GxnL6hIUtBK0nMG6zHfIYWcqOIb+MRI7w==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.6.tgz", + "integrity": "sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==", "engines": { "node": ">=v14.0.0", "npm": ">=7.0.0" @@ -1249,9 +1542,9 @@ } }, "node_modules/adm-zip": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.14.tgz", - "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", "engines": { "node": ">=12.0" } @@ -1427,17 +1720,17 @@ "dev": true }, "node_modules/axe-core": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", - "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", + "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", "engines": { "node": ">=4" } }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -1564,9 +1857,9 @@ "peer": true }, "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", "funding": [ { "type": "opencollective", @@ -1582,10 +1875,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -1726,9 +2019,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001640", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", - "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", + "version": "1.0.30001689", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz", + "integrity": "sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==", "funding": [ { "type": "opencollective", @@ -2095,22 +2388,22 @@ "dev": true }, "node_modules/crawlee": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/crawlee/-/crawlee-3.10.5.tgz", - "integrity": "sha512-gQEBJPnm+uUBEE4wgKJ/0lfpBClrOlu84iCfQ8u1YXkchTbPgsJHRfoZlVfgiynq6HkxSbT8gHYGNfIvFNA8Tg==", - "dependencies": { - "@crawlee/basic": "3.10.5", - "@crawlee/browser": "3.10.5", - "@crawlee/browser-pool": "3.10.5", - "@crawlee/cheerio": "3.10.5", - "@crawlee/cli": "3.10.5", - "@crawlee/core": "3.10.5", - "@crawlee/http": "3.10.5", - "@crawlee/jsdom": "3.10.5", - "@crawlee/linkedom": "3.10.5", - "@crawlee/playwright": "3.10.5", - "@crawlee/puppeteer": "3.10.5", - "@crawlee/utils": "3.10.5", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/crawlee/-/crawlee-3.12.1.tgz", + "integrity": "sha512-hUSoBQU3J4shvm6TANggju+B2fYJzeNglXvXGjY6tVz2k83EUEmW944vBumT5JLTCVqRq5Hd9jUY4iSkz8ssgw==", + "dependencies": { + "@crawlee/basic": "3.12.1", + "@crawlee/browser": "3.12.1", + "@crawlee/browser-pool": "3.12.1", + "@crawlee/cheerio": "3.12.1", + "@crawlee/cli": "3.12.1", + "@crawlee/core": "3.12.1", + "@crawlee/http": "3.12.1", + "@crawlee/jsdom": "3.12.1", + "@crawlee/linkedom": "3.12.1", + "@crawlee/playwright": "3.12.1", + "@crawlee/puppeteer": "3.12.1", + "@crawlee/utils": "3.12.1", "import-local": "^3.1.0", "tslib": "^2.4.0" }, @@ -2189,9 +2482,9 @@ } }, "node_modules/csv-stringify": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.0.tgz", - "integrity": "sha512-edlXFVKcUx7r8Vx5zQucsuMg4wb/xT6qyz+Sr1vnLrdXqlLD1+UKyWNyZ9zn6mUW1ewmGxrpVwAcChGF0HQ/2Q==" + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.2.tgz", + "integrity": "sha512-RFPahj0sXcmUyjrObAK+DOWtMvMIFV328n4qZJhgX3x2RqkQgOTU2mCUmiFR0CzM6AzChlRSUErjiJeEt8BaQA==" }, "node_modules/cypress": { "version": "13.12.0", @@ -2465,9 +2758,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1323829", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1323829.tgz", - "integrity": "sha512-AKSNI2PutHWuDMQmBhEDVADFSffBdeieCnE3Kz0e2fHXX17KNlLrv+b1HMyGI0r5WK3s8o9P1ANQR40dMMOa6A==" + "version": "0.0.1396320", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1396320.tgz", + "integrity": "sha512-QQoDyeDxHmexf/ZwBw3Q/rUUZ7ntvBElUr7S/72lD+rWnvr25fjOdvSSmgyVEdTg6kXwUYc+UJvboO/qHPiJHA==" }, "node_modules/diff": { "version": "5.0.0", @@ -2602,9 +2895,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.818", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.818.tgz", - "integrity": "sha512-eGvIk2V0dGImV9gWLq8fDfTTsCAeMDwZqEPMr+jMInxZdnp9Us8UpovYpRCf9NQ7VOFgrN2doNSgvISbsbNpxA==" + "version": "1.5.74", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.74.tgz", + "integrity": "sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -2669,9 +2962,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "engines": { "node": ">=6" } @@ -2883,9 +3176,9 @@ "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, "node_modules/figlet": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.7.0.tgz", - "integrity": "sha512-gO8l3wvqo0V7wEFLXPbkX83b7MVjRrk1oRLfYlZXol8nEpb/ON9pcKLI4qpBv5YtOTfrINtqb7b40iYY2FTWFg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.8.0.tgz", + "integrity": "sha512-chzvGjd+Sp7KUvPHZv6EXV5Ir3Q7kYNpCr4aHrRW79qFtTefmQZNny+W1pW9kf5zeE6dikku2W50W/wAH2xWgw==", "bin": { "figlet": "bin/index.js" }, @@ -2908,13 +3201,14 @@ } }, "node_modules/file-type": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-19.0.0.tgz", - "integrity": "sha512-s7cxa7/leUWLiXO78DVVfBVse+milos9FitauDLG1pI7lNaJ2+5lzPnr2N24ym+84HVwJL6hVuGfgVE+ALvU8Q==", + "version": "19.6.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-19.6.0.tgz", + "integrity": "sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==", "dependencies": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0", - "token-types": "^5.0.1" + "get-stream": "^9.0.1", + "strtok3": "^9.0.1", + "token-types": "^6.0.0", + "uint8array-extras": "^1.3.0" }, "engines": { "node": ">=18" @@ -2923,6 +3217,32 @@ "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, + "node_modules/file-type/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-type/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -2968,12 +3288,12 @@ } }, "node_modules/fingerprint-generator": { - "version": "2.1.52", - "resolved": "https://registry.npmjs.org/fingerprint-generator/-/fingerprint-generator-2.1.52.tgz", - "integrity": "sha512-ZdXUn/qIB4vI7pDze5aXidjoFwLdEfbBNj6+3oHzXcgwxzEfCOfNe3wW5NRZDJKgxF40R7TSOA7noBAAehSLgQ==", + "version": "2.1.61", + "resolved": "https://registry.npmjs.org/fingerprint-generator/-/fingerprint-generator-2.1.61.tgz", + "integrity": "sha512-6p0OZYCAdFmIwXgsPlKVI91S/ku2acOGZRyklMXT1OWql24AKRkRRamVboUpx7h1utn0xj3NgXw4k0YEQv+FLw==", "dependencies": { - "generative-bayesian-network": "^2.1.52", - "header-generator": "^2.1.52", + "generative-bayesian-network": "^2.1.61", + "header-generator": "^2.1.61", "tslib": "^2.4.0" }, "engines": { @@ -2981,11 +3301,11 @@ } }, "node_modules/fingerprint-injector": { - "version": "2.1.52", - "resolved": "https://registry.npmjs.org/fingerprint-injector/-/fingerprint-injector-2.1.52.tgz", - "integrity": "sha512-Sx+ykblqEP/P6nPRIE+C5CUNEfFpMZ3M/r5NDxOkSCTQVdfXXxlFx/UKOQNorvuJxryrtek4T0FvcB/KUbQfCQ==", + "version": "2.1.61", + "resolved": "https://registry.npmjs.org/fingerprint-injector/-/fingerprint-injector-2.1.61.tgz", + "integrity": "sha512-M+zH17m8N8RIrMXxSR8E+5/fWdes7RnzDPYoo2PwOifOZytiCLSSz3kKF14u6/vOsL+iv0NuVNh+TbvMOR7IWA==", "dependencies": { - "fingerprint-generator": "^2.1.52", + "fingerprint-generator": "^2.1.61", "tslib": "^2.4.0" }, "engines": { @@ -3149,9 +3469,9 @@ } }, "node_modules/generative-bayesian-network": { - "version": "2.1.52", - "resolved": "https://registry.npmjs.org/generative-bayesian-network/-/generative-bayesian-network-2.1.52.tgz", - "integrity": "sha512-8fYemN+uiVPCjoodQX4HUH8RLDqiQeGfemlWO9yR6SqIh/6BsrW52M0YTSafsH0615BhulRy5BR2uKAqLTJ22A==", + "version": "2.1.61", + "resolved": "https://registry.npmjs.org/generative-bayesian-network/-/generative-bayesian-network-2.1.61.tgz", + "integrity": "sha512-eIcVAU5I3SHKDwSqQxan6sRGAC0PRgj6rVNGUoKcErtAlbMsO8fr4Wr0hcBzLAc+6YKeNRpUKXWkEo/q1RLvTg==", "dependencies": { "adm-zip": "^0.5.9", "tslib": "^2.4.0" @@ -3278,22 +3598,21 @@ } }, "node_modules/got": { - "version": "14.4.1", - "resolved": "https://registry.npmjs.org/got/-/got-14.4.1.tgz", - "integrity": "sha512-IvDJbJBUeexX74xNQuMIVgCRRuNOm5wuK+OC3Dc2pnSoh1AOmgc7JVj7WC+cJ4u0aPcO9KZ2frTXcqK4W/5qTQ==", + "version": "14.4.5", + "resolved": "https://registry.npmjs.org/got/-/got-14.4.5.tgz", + "integrity": "sha512-sq+uET8TnNKRNnjEOPJzMcxeI0irT8BBNmf+GtZcJpmhYsQM1DSKmCROUjPWKsXZ5HzwD5Cf5/RV+QD9BSTxJg==", "dependencies": { - "@sindresorhus/is": "^6.3.1", + "@sindresorhus/is": "^7.0.1", "@szmarczak/http-timer": "^5.0.1", "cacheable-lookup": "^7.0.0", "cacheable-request": "^12.0.1", "decompress-response": "^6.0.0", "form-data-encoder": "^4.0.2", - "get-stream": "^8.0.1", "http2-wrapper": "^2.2.1", "lowercase-keys": "^3.0.0", "p-cancelable": "^4.0.1", "responselike": "^3.0.0", - "type-fest": "^4.19.0" + "type-fest": "^4.26.1" }, "engines": { "node": ">=20" @@ -3303,9 +3622,9 @@ } }, "node_modules/got-scraping": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/got-scraping/-/got-scraping-4.0.6.tgz", - "integrity": "sha512-bfL/sxJ+HnT2FFVDOs74PbPuWNg/xOX9BWefn7a5CVF5hI1cXUHaa/6y4tm6i1T0KDqomQ/hOKVdpGqSWIBuhA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/got-scraping/-/got-scraping-4.0.8.tgz", + "integrity": "sha512-QCptrUWsxgtP8LAnGZqjuJMwbLELlst1DF/Ba30OUOk7wi/LJtNwuYPUxoielRxTxd9QQ38FL/CWyRVc7m7ZkQ==", "dependencies": { "got": "^14.2.1", "header-generator": "^2.1.41", @@ -3395,21 +3714,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/got/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/got/node_modules/type-fest": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.21.0.tgz", - "integrity": "sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==", + "version": "4.30.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.2.tgz", + "integrity": "sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==", "engines": { "node": ">=16" }, @@ -3504,12 +3812,12 @@ } }, "node_modules/header-generator": { - "version": "2.1.52", - "resolved": "https://registry.npmjs.org/header-generator/-/header-generator-2.1.52.tgz", - "integrity": "sha512-2roqbZdd0hc7Bx+6BIQaHaCaSdnTXCnqayFbS8dpj53hmkQAXbSwiuTpfyAY1vePiaKweH6vDYhbtGOW+NmTmw==", + "version": "2.1.61", + "resolved": "https://registry.npmjs.org/header-generator/-/header-generator-2.1.61.tgz", + "integrity": "sha512-jwTzKvIeTcm4ghHSeQeHwdUGLuWqLg3zrOkt+Dsrr+NeuHtLlDdtisgNkpKn2yjJ2OAakwxmKWC41SNkEH0/5w==", "dependencies": { "browserslist": "^4.21.1", - "generative-bayesian-network": "^2.1.52", + "generative-bayesian-network": "^2.1.61", "ow": "^0.28.1", "tslib": "^2.4.0" }, @@ -3595,6 +3903,11 @@ "node": ">=10.19.0" } }, + "node_modules/https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", + "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==" + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -3628,9 +3941,9 @@ } }, "node_modules/idcac-playwright": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/idcac-playwright/-/idcac-playwright-0.1.2.tgz", - "integrity": "sha512-1YeecryHQC3SzDagSjqJTCDDs6F0x/9LaR8TPIN6x60myYAs7oALxZJdwNITeoR3wL0KeTZF3knVTRJ4gki5NQ==" + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/idcac-playwright/-/idcac-playwright-0.1.3.tgz", + "integrity": "sha512-VVYQ4sv6OrUJKVzYaIP1hq0qAHd1O22HW5LnL1Wf6zkrLStQ/QEg4iJ0rllIOEpd+Rmm+635AJD59A+Vw+2PgQ==" }, "node_modules/ieee754": { "version": "1.2.1", @@ -4154,9 +4467,9 @@ } }, "node_modules/linkedom": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.18.4.tgz", - "integrity": "sha512-JhLErxMIEOKByMi3fURXgI1fYOzR87L1Cn0+MI9GlMckFrqFZpV1SUGox1jcKtsKN3y6JgclcQf0FzZT//BuGw==", + "version": "0.18.6", + "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.18.6.tgz", + "integrity": "sha512-6G8euAJ84s7MTXTli5JIOO5tzEpyoUBw2/zcqAunSurbCtC83YcgrK+VTcO8HZ/rdR3eaaZM573FP9rNo1uXIA==", "dependencies": { "css-select": "^5.1.0", "cssom": "^0.5.0", @@ -4500,9 +4813,9 @@ } }, "node_modules/ml-matrix": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.11.1.tgz", - "integrity": "sha512-Fvp1xF1O07tt6Ux9NcnEQTei5UlqbRpvvaFZGs7l3Ij+nOaEDcmbSVtxwNa8V4IfdyFI1NLNUteroMJ1S6vcEg==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.12.0.tgz", + "integrity": "sha512-AGfR+pWaC0GmzjUnB6BfwhndPEUGz0i7QUYdqNuw1zhTov/vSRJ9pP2hs6BoGpaSbtXgrKjZz2zjD1M0xuur6A==", "dependencies": { "is-any-array": "^2.0.1", "ml-array-rescale": "^1.3.7" @@ -4971,9 +5284,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", @@ -4988,9 +5301,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -5002,6 +5315,11 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-strings": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/normalize-strings/-/normalize-strings-1.1.1.tgz", + "integrity": "sha512-fARPRdTwmrQDLYhmeh7j/eZwrCP6WzxD6uKOdK/hT/uKACAE9AG2Bc2dgqOZLkfmmctHpfcJ9w3AQnfLgg3GYg==" + }, "node_modules/normalize-url": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", @@ -5037,9 +5355,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", - "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==" + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==" }, "node_modules/object-assign": { "version": "4.1.1", @@ -5338,9 +5656,9 @@ } }, "node_modules/peek-readable": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.1.1.tgz", - "integrity": "sha512-4hEOSH7KeEaZpMDF/xfm1W9fS5rT7Ett3BkXWHqAEzRLLwLaHkwOL+GvvpIEh9UrvX9BDhzfkvteslgraoH69w==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.3.1.tgz", + "integrity": "sha512-GVlENSDW6KHaXcd9zkZltB7tCLosKB/4Hg0fqBJkAoBgYG2Tn1xtMgXtSUuMU9AK/gCm/tTdT8mgAeF4YNeeqw==", "engines": { "node": ">=14.16" }, @@ -5362,9 +5680,9 @@ "dev": true }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -5400,11 +5718,11 @@ } }, "node_modules/playwright": { - "version": "1.45.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.1.tgz", - "integrity": "sha512-Hjrgae4kpSQBr98nhCj3IScxVeVUixqj+5oyif8TdIn2opTCPEzqAqNMeK42i3cWDCVu9MI+ZsGWw+gVR4ISBg==", + "version": "1.46.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.1.tgz", + "integrity": "sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==", "dependencies": { - "playwright-core": "1.45.1" + "playwright-core": "1.46.1" }, "bin": { "playwright": "cli.js" @@ -5417,9 +5735,9 @@ } }, "node_modules/playwright-core": { - "version": "1.45.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.1.tgz", - "integrity": "sha512-LF4CUUtrUu2TCpDw4mcrAIuYrEjVDfT1cHbJMfwnE2+1b8PZcFzPNgvZCvq2JfQ4aTjRCCHw5EJ2tmr2NSzdPg==", + "version": "1.46.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.1.tgz", + "integrity": "sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==", "bin": { "playwright-core": "cli.js" }, @@ -5427,6 +5745,14 @@ "node": ">=18" } }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "engines": { + "node": ">=4" + } + }, "node_modules/prettier": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", @@ -5495,9 +5821,9 @@ } }, "node_modules/proxy-chain": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/proxy-chain/-/proxy-chain-2.5.1.tgz", - "integrity": "sha512-gGKYJdqE/uk/ncp2LGjbTT7ivjYuRAfhPU4/2VnccF2sSbQDR4YJROVnDkjLbBSLIDesAaoKav8WBLLv6YXwfA==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/proxy-chain/-/proxy-chain-2.5.6.tgz", + "integrity": "sha512-vC57FECgv2WKCVoaRrztJ86NBER7ZJCjSGvOnpMlgfi9vroMCoCwexQ+69He4YWUPE88D5jZizytiLbPjLv6/A==", "dependencies": { "socks": "^2.8.3", "socks-proxy-agent": "^8.0.3", @@ -5596,21 +5922,6 @@ "node": ">= 6" } }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -5954,11 +6265,11 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", - "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dependencies": { - "agent-base": "^7.1.1", + "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" }, @@ -5967,12 +6278,9 @@ } }, "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dependencies": { - "debug": "^4.3.4" - }, + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "engines": { "node": ">= 14" } @@ -6061,9 +6369,9 @@ } }, "node_modules/stream-json": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.8.0.tgz", - "integrity": "sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", + "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", "dependencies": { "stream-chain": "^2.2.5" } @@ -6157,15 +6465,15 @@ } }, "node_modules/strtok3": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.1.0.tgz", - "integrity": "sha512-19dQEwG6Jd+VabjPRyBhymIF069vZiqWSZa2jJBoKJTsqGKnTxowGoQaLnz+yLARfDI041IUQekyPUMWElOgsQ==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-9.1.1.tgz", + "integrity": "sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==", "dependencies": { "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.1.1" + "peek-readable": "^5.3.1" }, "engines": { - "node": ">=14.16" + "node": ">=16" }, "funding": { "type": "github", @@ -6187,6 +6495,23 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/syllable": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/syllable/-/syllable-5.0.1.tgz", + "integrity": "sha512-HWtNCp6v7J8H0lrT8j1HHjfOLltRoDcC7QRFVu25p4BE52JqetXG65nqC7CsatT8WQRfY4Qvh93BWJIUxbmXFg==", + "dependencies": { + "@types/pluralize": "^0.0.29", + "normalize-strings": "^1.1.0", + "pluralize": "^8.0.0" + }, + "bin": { + "syllable": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -6212,6 +6537,15 @@ "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" }, + "node_modules/text-readability": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/text-readability/-/text-readability-1.1.0.tgz", + "integrity": "sha512-I1kqUJX8nJwzCvCZSV945sjisi4NBnwZ5iwzzdsRXbqH8fKqhjwZMGdBm01UMb1K1EWrJ7jFozjXUobs7JZA6g==", + "dependencies": { + "pluralize": "^8.0.0", + "syllable": "^5.0.1" + } + }, "node_modules/throttleit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", @@ -6232,20 +6566,20 @@ "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" }, "node_modules/tldts": { - "version": "6.1.31", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.31.tgz", - "integrity": "sha512-x4Kp6r2VwnkLYwWVXs/wi4j7QN9w1XPzEDZtDpHY8LEBM/E2TwlR7rT1mqpINUZ/r+dmuVo9+CtdPPk+ia7OHA==", + "version": "6.1.68", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.68.tgz", + "integrity": "sha512-JKF17jROiYkjJPT73hUTEiTp2OBCf+kAlB+1novk8i6Q6dWjHsgEjw9VLiipV4KTJavazXhY1QUXyQFSem2T7w==", "dependencies": { - "tldts-core": "^6.1.31" + "tldts-core": "^6.1.68" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.31", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.31.tgz", - "integrity": "sha512-IdTd0OpW2qgG1mbFxoXp14ohLNO6KP+H3htsNb3pk2FF8m21vvIaDlTWmKBR+UnZmXkSFOfZYYeswPAjSoHs+g==" + "version": "6.1.68", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.68.tgz", + "integrity": "sha512-85TdlS/DLW/gVdf2oyyzqp3ocS30WxjaL4la85EArl9cHUR/nizifKAJPziWewSZjDZS71U517/i6ciUeqtB5Q==" }, "node_modules/tmp": { "version": "0.2.3", @@ -6270,9 +6604,9 @@ } }, "node_modules/token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz", + "integrity": "sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==", "dependencies": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" @@ -6386,6 +6720,17 @@ "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.2.0.tgz", "integrity": "sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==" }, + "node_modules/uint8array-extras": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz", + "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -6409,9 +6754,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "funding": [ { "type": "opencollective", @@ -6427,8 +6772,8 @@ } ], "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -6745,6 +7090,14 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, + "node_modules/xpath-to-css": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/xpath-to-css/-/xpath-to-css-1.2.0.tgz", + "integrity": "sha512-jOSBw4iYbm9inNP0DbQB7cO0tPBfogG3oLA739eTO3WgJXAelLyZcFlCe2W/gBaYXT0pglXN6tJ7svFVaewBmA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index f7bbdf9..9a7a8bb 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,6 @@ "typescript": "^5.5.2" }, "dependencies": { - "@govtechsg/purple-hats": "github:GovTechSG/purple-hats#master" + "@govtechsg/oobee": "github:GovTechSG/purple-a11y#master" } } diff --git a/shell_scripts/host_websites_and_run_cypress.sh b/shell_scripts/host_websites_and_run_cypress.sh index 1f5f66b..14d3981 100755 --- a/shell_scripts/host_websites_and_run_cypress.sh +++ b/shell_scripts/host_websites_and_run_cypress.sh @@ -29,7 +29,7 @@ echo "Clone Purple A11y and install dependencies" npm install "$@" # Navigate to purple-hats directory, install dependencies, and build -cd node_modules/@govtechsg/purple-hats && \ +cd node_modules/@govtechsg/oobee && \ npm install && \ npm run build || true && \ cd ../../../ diff --git a/src/cypress/support/e2e.ts b/src/cypress/support/e2e.ts index 9a9783b..bbca265 100644 --- a/src/cypress/support/e2e.ts +++ b/src/cypress/support/e2e.ts @@ -43,10 +43,20 @@ export const getCliCommand = (cliOptionsJson, toRunInPurpleA11yDirectly = false) } }; -const base64Decode = (data) => { - const compressedBytes = Uint8Array.from(atob(data), c => c.charCodeAt(0)); - const jsonString = new TextDecoder().decode(compressedBytes); - return JSON.parse(jsonString); +const base64DecodeChunkedWithDecoder = (data, chunkSize = 1024 * 1024) => { + const encodedChunks = data.split('.'); + const decoder = new TextDecoder(); + const jsonParts = []; + + encodedChunks.forEach(chunk => { + for (let i = 0; i < chunk.length; i += chunkSize) { + const chunkPart = chunk.slice(i, i + chunkSize); + const decodedBytes = Uint8Array.from(atob(chunkPart), c => c.charCodeAt(0)); + jsonParts.push(decoder.decode(decodedBytes, { stream: true })); + } + }); + + return JSON.parse(jsonParts.join('')); }; Cypress.Commands.add('runPurpleA11yProcess', (cliOptionsJson) => { @@ -134,8 +144,8 @@ Cypress.Commands.add('checkResultFilesCreated', (cliOptionsJson, purpleA11yResul Cypress.Commands.add('checkReportHtmlScanData', (cliOptionsJson, purpleA11yResultFolder, isIntegrationMode = false) => { return cy.task('readFile', `${cliOptionsJson.e}/${purpleA11yResultFolder}/report.html`) .then((reportHtmlData: string) => { - const scanDataEncoded = reportHtmlData.match(/scanData\s*=\s*base64Decode\('([^']+)'\)/)[1]; - const scanDataDecodedJson = base64Decode(scanDataEncoded); + const scanDataEncoded = reportHtmlData.match(/scanData\s*=\s*base64DecodeChunkedWithDecoder\('([^']+)'\)/)[1]; + const scanDataDecodedJson = base64DecodeChunkedWithDecoder(scanDataEncoded); // TEST CASE: scanData.scanType should be according to the flag -c let expectedScanType; diff --git a/www/http_server_auth.py b/www/http_server_auth.py index 6b10799..f5b43f9 100644 --- a/www/http_server_auth.py +++ b/www/http_server_auth.py @@ -27,7 +27,7 @@ def authenticate(self): def do_HEAD(self): self.send_response(200) - self.send_header("Content-type", "text/html") + self.send_correct_headers(self.path) self.end_headers() def do_AUTHHEAD(self): @@ -43,6 +43,9 @@ def do_GET(self): self.do_AUTHHEAD() self.wfile.write(b"Authentication required") return + self.send_response(200) + self.send_correct_headers(self.path) + self.end_headers() super().do_GET() def requires_authentication(self): @@ -53,6 +56,23 @@ def requires_authentication(self): return True return False + def send_correct_headers(self, path): + """ Send correct Content-Type header based on the file extension. """ + content_type, _ = self.get_custom_mime_type(path) + if content_type: + self.send_header("Content-Type", content_type) + else: + self.send_header("Content-Type", "application/octet-stream") + + def get_custom_mime_type(self, path): + """ Return MIME type based on file extension. """ + if path.endswith(".rss"): + return "application/rss+xml", None + elif path.endswith(".xml"): + return "application/xml", None + else: + return "text/html", None + class ThreadedHTTPServer(ThreadingMixIn, HTTPServer): """ Handle requests in a separate thread. """