From bab24892c71bcb305266ac286a981a5ad46bb617 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Tue, 18 Aug 2026 14:00:20 +0300 Subject: [PATCH] chore(cleanup): archive one-time migrations, secure telemetry endpoint, and purge temporary files --- $LOG_FILE | 9 - apps/api/package-lock.json | 2180 +- apps/web/package-lock.json | 675 +- .../migrations_archive/add-syria.sh | 0 .../migrations_archive/fix_exact_border.sh | 0 .../import_official_boundaries.sh | 0 .../migrations_archive/import_syria_csv.sh | 0 .../migrations_archive/migrate_data.py | 0 .../migrations_archive/migrate_jordan.py | 0 .../migrations_archive/restore_osm_roads.sh | 0 .../migrations_archive/revert_boundaries.sh | 0 .../telemetry/location.php | 27 +- project_source_code_light.txt | 101242 --------------- 13 files changed, 1927 insertions(+), 102206 deletions(-) delete mode 100644 $LOG_FILE rename add-syria.sh => infrastructure/migrations_archive/add-syria.sh (100%) rename fix_exact_border.sh => infrastructure/migrations_archive/fix_exact_border.sh (100%) rename import_official_boundaries.sh => infrastructure/migrations_archive/import_official_boundaries.sh (100%) rename import_syria_csv.sh => infrastructure/migrations_archive/import_syria_csv.sh (100%) rename migrate_data.py => infrastructure/migrations_archive/migrate_data.py (100%) rename migrate_jordan.py => infrastructure/migrations_archive/migrate_jordan.py (100%) rename restore_osm_roads.sh => infrastructure/migrations_archive/restore_osm_roads.sh (100%) rename revert_boundaries.sh => infrastructure/migrations_archive/revert_boundaries.sh (100%) rename location.php => infrastructure/telemetry/location.php (62%) delete mode 100644 project_source_code_light.txt diff --git a/$LOG_FILE b/$LOG_FILE deleted file mode 100644 index df3926e..0000000 --- a/$LOG_FILE +++ /dev/null @@ -1,9 +0,0 @@ -Downloading Syria map data... - % Total % Received % Xferd Average Speed Time Time Time Current - Dload Upload Total Spent Left Speed - 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 239 100 239 0 0 829 0 --:--:-- --:--:-- --:--:-- 829 -Warning: Failed to open the file -Warning: /home/hamzadoctor/app/infrastructure/osm-data/syria-latest.osm.pbf: -Warning: No such file or directory - 0 73.8M 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 -curl: (23) Failure writing output to destination, passed 4096 returned 4294967295 diff --git a/apps/api/package-lock.json b/apps/api/package-lock.json index 8b104f3..b484cb4 100644 --- a/apps/api/package-lock.json +++ b/apps/api/package-lock.json @@ -22,8 +22,10 @@ "cache-manager-redis-store": "^2.0.0", "class-transformer": "^0.5.1", "class-validator": "^0.14.4", + "firebase-admin": "^12.1.0", "helmet": "^8.1.0", "mysql2": "^3.20.0", + "nodemailer": "^6.9.13", "pg": "^8.20.0", "redis": "^5.11.0", "reflect-metadata": "^0.2.2", @@ -40,6 +42,7 @@ "@types/express": "^5.0.0", "@types/jest": "^30.0.0", "@types/node": "^22.10.7", + "@types/nodemailer": "^6.4.14", "@types/supertest": "^6.0.2", "eslint": "^9.18.0", "eslint-config-prettier": "^10.0.1", @@ -58,15 +61,15 @@ } }, "node_modules/@angular-devkit/core": { - "version": "19.2.19", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.19.tgz", - "integrity": "sha512-JbLL+4IMLMBgjLZlnPG4lYDfz4zGrJ/s6Aoon321NJKuw1Kb1k5KpFu9dUY0BqLIe8xPQ2UJBpI+xXdK5MXMHQ==", + "version": "19.2.27", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.27.tgz", + "integrity": "sha512-3amNzoCVSKd7ah6l6lBQL4onwwJvqvam7FMoQBILrxtW5LB5ezh8gMSPuA4zJjKjoRzf9uoWdlzqv/84I52xZA==", "dev": true, "dependencies": { - "ajv": "8.17.1", + "ajv": "8.18.0", "ajv-formats": "3.0.1", "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", + "picomatch": "4.0.4", "rxjs": "7.8.1", "source-map": "0.7.4" }, @@ -85,9 +88,9 @@ } }, "node_modules/@angular-devkit/core/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -116,12 +119,12 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "19.2.19", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.19.tgz", - "integrity": "sha512-J4Jarr0SohdrHcb40gTL4wGPCQ952IMWF1G/MSAQfBAPvA9ZKApYhpxcY7PmehVePve+ujpus1dGsJ7dPxz8Kg==", + "version": "19.2.27", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.27.tgz", + "integrity": "sha512-/PZmyAlb2NGWPikRRuiWLdfHQd8Wrx6lX4HqvTcaDhlU43M3T0ud4PH2T3QDp7BzHYY92xtD8iPxX2asg67G1A==", "dev": true, "dependencies": { - "@angular-devkit/core": "19.2.19", + "@angular-devkit/core": "19.2.27", "jsonc-parser": "3.3.1", "magic-string": "0.30.17", "ora": "5.4.1", @@ -134,13 +137,13 @@ } }, "node_modules/@angular-devkit/schematics-cli": { - "version": "19.2.19", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.19.tgz", - "integrity": "sha512-7q9UY6HK6sccL9F3cqGRUwKhM7b/XfD2YcVaZ2WD7VMaRlRm85v6mRjSrfKIAwxcQU0UK27kMc79NIIqaHjzxA==", + "version": "19.2.27", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.27.tgz", + "integrity": "sha512-wHYH6SVXVykhLzovUHtYor3Nl4SpIiITi7r9DQDaKYUD4hpRBx25W6N9eGuakT9Vd5tV/x6wmvQFWQZQwFB7eA==", "dev": true, "dependencies": { - "@angular-devkit/core": "19.2.19", - "@angular-devkit/schematics": "19.2.19", + "@angular-devkit/core": "19.2.27", + "@angular-devkit/schematics": "19.2.27", "@inquirer/prompts": "7.3.2", "ansi-colors": "4.1.3", "symbol-observable": "4.0.0", @@ -194,12 +197,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", + "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -208,29 +211,29 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -256,13 +259,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", "dev": true, "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -272,13 +275,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -297,36 +300,36 @@ } }, "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "dev": true, "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -345,52 +348,52 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "dev": true, "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "dev": true, "dependencies": { - "@babel/types": "^7.29.0" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -622,31 +625,31 @@ } }, "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", "debug": "^4.3.1" }, "engines": { @@ -654,13 +657,13 @@ } }, "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -900,6 +903,220 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@fastify/busboy": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-3.2.1.tgz", + "integrity": "sha512-tgK4O+57iz5ycYNGXE5ZWj1ES03lD2XnnBYWSbU/3wYZRMQzCUq7Ycds/RdyBZQeL5MU4fxBt6lzbIWf/Bickw==" + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", + "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==" + }, + "node_modules/@firebase/app-types": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", + "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==" + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", + "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==" + }, + "node_modules/@firebase/component": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.9.tgz", + "integrity": "sha512-gm8EUEJE/fEac86AvHn8Z/QW8BvR56TBw3hMW0O838J/1mThYQXAIQBgUv75EqlCZfdawpWLrKt1uXvp9ciK3Q==", + "dependencies": { + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.8.tgz", + "integrity": "sha512-dzXALZeBI1U5TXt6619cv0+tgEhJiwlUtQ55WNZY7vGAjv7Q1QioV969iYwt1AQQ0ovHnEW0YW9TiBfefLvErg==", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-compat": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.8.tgz", + "integrity": "sha512-OpeWZoPE3sGIRPBKYnW9wLad25RaWbGyk7fFQe4xnJQKRzlynWeFBSRRAoLE2Old01WXwskUiucNqUUVlFsceg==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/database": "1.0.8", + "@firebase/database-types": "1.0.5", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.5.tgz", + "integrity": "sha512-fTlqCNwFYyq/C6W7AJ5OCuq5CeZuBEsEwptnVxlNPkWCo5cTTyukzAHRSO/jaQcItz33FfYrrFk1SJofcu2AaQ==", + "dependencies": { + "@firebase/app-types": "0.9.2", + "@firebase/util": "1.10.0" + } + }, + "node_modules/@firebase/logger": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz", + "integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/util": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.0.tgz", + "integrity": "sha512-xKtx4A668icQqoANRxyDLBLz51TAbDP9KRfpbKGxiCAW346d0BeJe5vN6/hKxxmWwnZ0mautyv39JxviwwQMOQ==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@google-cloud/firestore": { + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.11.6.tgz", + "integrity": "sha512-EW/O8ktzwLfyWBOsNuhRoMi8lrC3clHM5LVFhGvO1HCsLozCOOXRAlHrYBoE6HL42Sc8yYMuCb2XqcnJ4OOEpw==", + "optional": true, + "dependencies": { + "@opentelemetry/api": "^1.3.0", + "fast-deep-equal": "^3.1.1", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^4.3.3", + "protobufjs": "^7.2.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "optional": true, + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "optional": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/storage": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.22.0.tgz", + "integrity": "sha512-W98gTQOAntEeEQ7/pZxSQXxfUO5CiQcXJRsxBpUa6UU25n8YN/VtogPBi0H+MAmUrn/6bY/sBhFansoWEsr2/g==", + "optional": true, + "dependencies": { + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "<4.1.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "duplexify": "^4.1.3", + "fast-xml-parser": "^5.3.4", + "gaxios": "^6.0.2", + "google-auth-library": "^9.6.3", + "html-entities": "^2.5.2", + "mime": "^3.0.0", + "p-limit": "^3.0.1", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@google-cloud/storage/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz", + "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==", + "optional": true, + "dependencies": { + "@grpc/proto-loader": "^0.8.0", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.1.tgz", + "integrity": "sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==", + "optional": true, + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.5.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", + "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", + "optional": true, + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1410,9 +1627,9 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.1.tgz", + "integrity": "sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==", "dev": true, "dependencies": { "argparse": "^1.0.7", @@ -1688,9 +1905,9 @@ } }, "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0" @@ -1923,6 +2140,16 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/@keyv/serialize": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", @@ -1955,9 +2182,9 @@ } }, "node_modules/@nestjs/cache-manager": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-3.1.0.tgz", - "integrity": "sha512-pEIqYZrBcE8UdkJmZRduurvoUfdU+3kRPeO1R2muiMbZnRuqlki5klFFNllO9LyYWzrx98bd1j0PSPKSJk1Wbw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-3.1.3.tgz", + "integrity": "sha512-HMtiOfHz75NZX7mJn1VnZGLSachVI04TnUc5wvEogIaKwk5BDQHgtP5htxreizjv7oxKalJbuTyxtiF6bE+bgQ==", "peerDependencies": { "@nestjs/common": "^9.0.0 || ^10.0.0 || ^11.0.0", "@nestjs/core": "^9.0.0 || ^10.0.0 || ^11.0.0", @@ -1967,14 +2194,14 @@ } }, "node_modules/@nestjs/cli": { - "version": "11.0.16", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.16.tgz", - "integrity": "sha512-P0H+Vcjki6P5160E5QnMt3Q0X5FTg4PZkP99Ig4lm/4JWqfw32j3EXv3YBTJ2DmxLwOQ/IS9F7dzKpMAgzKTGg==", + "version": "11.0.24", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.24.tgz", + "integrity": "sha512-aIHxQLSYtXShifA3zwWIeznEsZnNa3Iz2QRykFj+sl9IcbERBHr5nH87FRgywM+He3NxoF5WazHfR8FsmVeWxw==", "dev": true, "dependencies": { - "@angular-devkit/core": "19.2.19", - "@angular-devkit/schematics": "19.2.19", - "@angular-devkit/schematics-cli": "19.2.19", + "@angular-devkit/core": "19.2.27", + "@angular-devkit/schematics": "19.2.27", + "@angular-devkit/schematics-cli": "19.2.27", "@inquirer/prompts": "7.10.1", "@nestjs/schematics": "^11.0.1", "ansis": "4.2.0", @@ -1982,13 +2209,13 @@ "cli-table3": "0.6.5", "commander": "4.1.1", "fork-ts-checker-webpack-plugin": "9.1.0", - "glob": "13.0.0", + "glob": "13.0.6", "node-emoji": "1.11.0", "ora": "5.4.1", "tsconfig-paths": "4.2.0", "tsconfig-paths-webpack-plugin": "4.2.0", "typescript": "5.9.3", - "webpack": "5.104.1", + "webpack": "5.106.2", "webpack-node-externals": "3.0.0" }, "bin": { @@ -1998,7 +2225,7 @@ "node": ">= 20.11" }, "peerDependencies": { - "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 || ^0.8.0", "@swc/core": "^1.3.62" }, "peerDependenciesMeta": { @@ -2010,167 +2237,6 @@ } } }, - "node_modules/@nestjs/cli/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@nestjs/cli/node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@nestjs/cli/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/@nestjs/cli/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@nestjs/cli/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@nestjs/cli/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/@nestjs/cli/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@nestjs/cli/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@nestjs/cli/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@nestjs/cli/node_modules/webpack": { - "version": "5.104.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", - "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.15.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.4", - "es-module-lexer": "^2.0.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.16", - "watchpack": "^2.4.4", - "webpack-sources": "^3.3.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, "node_modules/@nestjs/common": { "version": "11.1.17", "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.17.tgz", @@ -2202,13 +2268,13 @@ } }, "node_modules/@nestjs/config": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.3.tgz", - "integrity": "sha512-FQ3M3Ohqfl+nHAn5tp7++wUQw0f2nAk+SFKe8EpNRnIifPqvfJP6JQxPKtFLMOHbyer4X646prFG4zSRYEssQQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.4.tgz", + "integrity": "sha512-CJPjNitr0bAufSEnRe2N+JbnVmMmDoo6hvKCPzXgZoGwJSmp/dZPk9f/RMbuD/+Q1ZJPjwsRpq0vxna++Knwow==", "dependencies": { - "dotenv": "17.2.3", + "dotenv": "17.4.1", "dotenv-expand": "12.0.3", - "lodash": "4.17.23" + "lodash": "4.18.1" }, "peerDependencies": { "@nestjs/common": "^10.0.0 || ^11.0.0", @@ -2216,15 +2282,13 @@ } }, "node_modules/@nestjs/core": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.17.tgz", - "integrity": "sha512-lD5mAYekTTurF3vDaa8C2OKPnjiz4tsfxIc5XlcSUzOhkwWf6Ay3HKvt6FmvuWQam6uIIHX52Clg+e6tAvf/cg==", - "hasInstallScript": true, + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.2.1.tgz", + "integrity": "sha512-M5PWFU8NdRTgX9Po49d7TQKg7f5t8GAVUa/Esy4tmaMWcKugTzg3ZzpJfD3LEPMuRHjfs6+8pQYgtuP2uz3rDw==", "dependencies": { - "@nuxt/opencollective": "0.4.1", "fast-safe-stringify": "2.1.1", "iterare": "1.2.1", - "path-to-regexp": "8.3.0", + "path-to-regexp": "8.4.2", "tslib": "2.8.1", "uid": "2.0.2" }, @@ -2256,13 +2320,13 @@ } }, "node_modules/@nestjs/mapped-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.1.0.tgz", - "integrity": "sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.1.1.tgz", + "integrity": "sha512-SCCoMEJ6jdeI5h/N+KCVF1+pmg/hmEkNA5nHTS8Gvww7T/LCl4o1gFLinw2iQ60w7slFkszHcGLKGdazVI4F8A==", "peerDependencies": { "@nestjs/common": "^10.0.0 || ^11.0.0", "class-transformer": "^0.4.0 || ^0.5.0", - "class-validator": "^0.13.0 || ^0.14.0", + "class-validator": "^0.13.0 || ^0.14.0 || ^0.15.0", "reflect-metadata": "^0.1.12 || ^0.2.0" }, "peerDependenciesMeta": { @@ -2275,14 +2339,14 @@ } }, "node_modules/@nestjs/platform-express": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.17.tgz", - "integrity": "sha512-mAf4eOsSBsTOn/VbrUO1gsjW6dVh91qqXPMXun4dN8SnNjf7PTQagM9o8d6ab8ZBpNe6UdZftdrZoDetU+n4Qg==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.2.1.tgz", + "integrity": "sha512-lbaVW94s1u8AJfgmBtdMPi16MEuFBiLrnflUIA9tZ9e5eoUsGTN7XXXRjU5kTTLgjnTCM53qgBXXGmTqmyfoQA==", "dependencies": { "cors": "2.8.6", "express": "5.2.1", - "multer": "2.1.1", - "path-to-regexp": "8.3.0", + "multer": "2.2.0", + "path-to-regexp": "8.4.2", "tslib": "2.8.1" }, "funding": { @@ -2295,9 +2359,9 @@ } }, "node_modules/@nestjs/schedule": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.1.1.tgz", - "integrity": "sha512-kQl1RRgi02GJ0uaUGCrXHCcwISsCsJDciCKe38ykJZgnAeeoeVWs8luWtBo4AqAAXm4nS5K8RlV0smHUJ4+2FA==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.1.3.tgz", + "integrity": "sha512-RflMFOpR16Dwd1jAUbeB4mfGTCh65fvEdL4mSjQPJChpkRGRjIXjb+6YQcK2faQrVT60c9DmLmoVR7/ONCtuYQ==", "dependencies": { "cron": "4.4.0" }, @@ -2307,31 +2371,37 @@ } }, "node_modules/@nestjs/schematics": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.9.tgz", - "integrity": "sha512-0NfPbPlEaGwIT8/TCThxLzrlz3yzDNkfRNpbL7FiplKq3w4qXpJg0JYwqgMEJnLQZm3L/L/5XjoyfJHUO3qX9g==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.1.0.tgz", + "integrity": "sha512-lVxGZ46tcdItFMoXr6vyKWlnOsm1SZm/GUqAEDvy2RL4Q4O+3bkziAhrO7Y8JLssFUUvNFEGqAizI52WAxhjDw==", "dev": true, "dependencies": { - "@angular-devkit/core": "19.2.17", - "@angular-devkit/schematics": "19.2.17", - "comment-json": "4.4.1", + "@angular-devkit/core": "19.2.24", + "@angular-devkit/schematics": "19.2.24", + "comment-json": "5.0.0", "jsonc-parser": "3.3.1", "pluralize": "8.0.0" }, "peerDependencies": { + "prettier": "^3.0.0", "typescript": ">=4.8.2" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { - "version": "19.2.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.17.tgz", - "integrity": "sha512-Ah008x2RJkd0F+NLKqIpA34/vUGwjlprRCkvddjDopAWRzYn6xCkz1Tqwuhn0nR1Dy47wTLKYD999TYl5ONOAQ==", + "version": "19.2.24", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.24.tgz", + "integrity": "sha512-Kd49warf6U/EyWe5BszF/eebN3zQ3bk7tgfEljAw8q/rX95UUtriJubWvp6pgzHfzBA4jwq8f+QiNZB8eBEXPA==", "dev": true, "dependencies": { - "ajv": "8.17.1", + "ajv": "8.18.0", "ajv-formats": "3.0.1", "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", + "picomatch": "4.0.4", "rxjs": "7.8.1", "source-map": "0.7.4" }, @@ -2350,12 +2420,12 @@ } }, "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { - "version": "19.2.17", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.17.tgz", - "integrity": "sha512-ADfbaBsrG8mBF6Mfs+crKA/2ykB8AJI50Cv9tKmZfwcUcyAdmTr+vVvhsBCfvUAEokigSsgqgpYxfkJVxhJYeg==", + "version": "19.2.24", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.24.tgz", + "integrity": "sha512-lnw+ZM1Io+cJAkReC0NPDjqObL8NtKzKIkdgEEKC8CUmkhurYhedbicN8Y8NYHgG1uLd2GozW3+/QqPRZaN+Lw==", "dev": true, "dependencies": { - "@angular-devkit/core": "19.2.17", + "@angular-devkit/core": "19.2.24", "jsonc-parser": "3.3.1", "magic-string": "0.30.17", "ora": "5.4.1", @@ -2368,9 +2438,9 @@ } }, "node_modules/@nestjs/schematics/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -2399,19 +2469,19 @@ } }, "node_modules/@nestjs/swagger": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-11.2.6.tgz", - "integrity": "sha512-oiXOxMQqDFyv1AKAqFzSo6JPvMEs4uA36Eyz/s2aloZLxUjcLfUMELSLSNQunr61xCPTpwEOShfmO7NIufKXdA==", + "version": "11.4.7", + "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-11.4.7.tgz", + "integrity": "sha512-QyDYnmfP4IRucgmtQxMqzgRBdWtjFoDp8eFvvgf92+3wdLCL+Q0xOFO1948j/ntW/Wi7qT2dyck6ka8ADzPWQQ==", "dependencies": { "@microsoft/tsdoc": "0.16.0", - "@nestjs/mapped-types": "2.1.0", - "js-yaml": "4.1.1", - "lodash": "4.17.23", - "path-to-regexp": "8.3.0", - "swagger-ui-dist": "5.31.0" + "@nestjs/mapped-types": "2.1.1", + "js-yaml": "5.3.0", + "lodash": "4.18.1", + "path-to-regexp": "8.4.2", + "swagger-ui-dist": "5.32.13" }, "peerDependencies": { - "@fastify/static": "^8.0.0 || ^9.0.0", + "@fastify/static": "^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/common": "^11.0.1", "@nestjs/core": "^11.0.1", "class-transformer": "*", @@ -2430,10 +2500,31 @@ } } }, + "node_modules/@nestjs/swagger/node_modules/js-yaml": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.3.0.tgz", + "integrity": "sha512-muutsYr+e2+d3rTgUGslq5rxbBlUy3cJ61IsHag2QNDQV+7zXWjkUpmALIajhrlLlrgRUiymj6U3zUr/TMK84Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.mjs" + } + }, "node_modules/@nestjs/testing": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.17.tgz", - "integrity": "sha512-lNffw+z+2USewmw4W0tsK+Rq94A2N4PiHbcqoRUu5y8fnqxQeIWGHhjo5BFCqj7eivqJBhT7WdRydxVq4rAHzg==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.2.1.tgz", + "integrity": "sha512-3mdABjqFafW+ix6fGJMPHvnj/9Or6kAPiszN8zt9bHGPuHYdkkp+9zsBDDUVuP59BcbzBqNBa5fXHBaeMzVvog==", "dev": true, "dependencies": { "tslib": "2.8.1" @@ -2468,15 +2559,15 @@ } }, "node_modules/@nestjs/typeorm": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.0.tgz", - "integrity": "sha512-SOeUQl70Lb2OfhGkvnh4KXWlsd+zA08RuuQgT7kKbzivngxzSo1Oc7Usu5VxCxACQC9wc2l9esOHILSJeK7rJA==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.3.tgz", + "integrity": "sha512-zJ+E5l7auVVA7c0PsvcMdyvRPKTUqU5s2ToYmOA2QEsXQ42qbUGtK4+1HlRfpHqBkCSXP+phiH4luvf9DyJNog==", "peerDependencies": { "@nestjs/common": "^10.0.0 || ^11.0.0", "@nestjs/core": "^10.0.0 || ^11.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.2.0", - "typeorm": "^0.3.0" + "typeorm": "^0.3.0 || ^1.0.0-dev" } }, "node_modules/@noble/hashes": { @@ -2491,19 +2582,25 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@nuxt/opencollective": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", - "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", - "dependencies": { - "consola": "^3.2.3" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, + "node_modules/@nodable/entities": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-3.0.0.tgz", + "integrity": "sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/nodable" + } + ], + "optional": true + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", + "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", + "optional": true, "engines": { - "node": "^14.18.0 || >=16.10.0", - "npm": ">=5.10.0" + "node": ">=8.0.0" } }, "node_modules/@paralleldrive/cuid2": { @@ -2536,6 +2633,63 @@ "url": "https://opencollective.com/pkgr" } }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "optional": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "optional": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", + "optional": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", + "optional": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", + "optional": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "optional": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "optional": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "optional": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.2.tgz", + "integrity": "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==", + "optional": true + }, "node_modules/@redis/bloom": { "version": "5.11.0", "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-5.11.0.tgz", @@ -2655,6 +2809,15 @@ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, + "node_modules/@tootallnate/once": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.1.tgz", + "integrity": "sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==", + "optional": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", @@ -2740,6 +2903,12 @@ "@types/node": "*" } }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", + "optional": true + }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", @@ -2850,6 +3019,21 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", + "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", + "dependencies": { + "@types/ms": "*", + "@types/node": "*" + } + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "optional": true + }, "node_modules/@types/luxon": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz", @@ -2861,6 +3045,11 @@ "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", "dev": true }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + }, "node_modules/@types/node": { "version": "22.19.15", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", @@ -2869,6 +3058,15 @@ "undici-types": "~6.21.0" } }, + "node_modules/@types/nodemailer": { + "version": "6.4.24", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.24.tgz", + "integrity": "sha512-Ww4u0rT9wQNXh4JiQaIwx3QWdcOFXzOjQA2zc+jtFYNmQiT4mIUqcDin51bDFdkzKubFnQCZNK7FIHlPKQ/q9w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/qs": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", @@ -2881,6 +3079,56 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, + "node_modules/@types/request": { + "version": "2.48.13", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.13.tgz", + "integrity": "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==", + "optional": true, + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.5" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.6.tgz", + "integrity": "sha512-Ogz/E85h9tlfJzpI6TuFpGcHZFhLrb9Gw8wq9v40CxSCPnv7ahKr6Xgtkn0KYCDQJ8DNn5VoMO8EXr9V5PadyA==", + "optional": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@types/request/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@types/request/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "optional": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/@types/send": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", @@ -2928,6 +3176,12 @@ "@types/superagent": "^8.1.0" } }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "optional": true + }, "node_modules/@types/validator": { "version": "13.15.10", "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.10.tgz", @@ -3137,15 +3391,15 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { @@ -3629,6 +3883,18 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "optional": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", @@ -3686,6 +3952,17 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", @@ -3720,9 +3997,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -3800,6 +4077,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "dev": true, "engines": { "node": ">=14" } @@ -3818,9 +4096,9 @@ } }, "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "engines": { "node": ">=8.6" @@ -3829,6 +4107,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/anynum": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/anynum/-/anynum-1.0.1.tgz", + "integrity": "sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "optional": true + }, "node_modules/app-root-path": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", @@ -3859,12 +4149,30 @@ "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", "dev": true }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "optional": true, + "dependencies": { + "retry": "0.13.1" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -3893,13 +4201,14 @@ } }, "node_modules/axios": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", - "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", + "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.16.0", + "form-data": "^4.0.6", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/babel-jest": { @@ -4032,6 +4341,15 @@ "node": ">=6.0.0" } }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "optional": true, + "engines": { + "node": "*" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -4044,19 +4362,19 @@ } }, "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", + "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", "dependencies": { "bytes": "^3.1.2", - "content-type": "^1.0.5", + "content-type": "^2.0.0", "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", + "http-errors": "^2.0.1", + "iconv-lite": "^0.7.2", "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" + "qs": "^6.15.2", + "raw-body": "^3.0.2", + "type-is": "^2.1.0" }, "engines": { "node": ">=18" @@ -4066,6 +4384,35 @@ "url": "https://opencollective.com/express" } }, + "node_modules/body-parser/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/body-parser/node_modules/type-is": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", + "dependencies": { + "content-type": "^2.0.0", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -4166,6 +4513,11 @@ "ieee754": "^1.1.13" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -4557,13 +4909,12 @@ } }, "node_modules/comment-json": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.4.1.tgz", - "integrity": "sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-5.0.0.tgz", + "integrity": "sha512-uiqLcOiVDJtBP8WGkZHEP+FZIhTzP1dxvn59EfoYUi9gqupjrBWVQkO2atDrbnKPwLeotFYDsuNb26uBMqB+hw==", "dev": true, "dependencies": { "array-timsort": "^1.0.3", - "core-util-is": "^1.0.3", "esprima": "^4.0.1" }, "engines": { @@ -4599,14 +4950,6 @@ "typedarray": "^0.0.6" } }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, "node_modules/content-disposition": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", @@ -4655,12 +4998,6 @@ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, "node_modules/cors": { "version": "2.8.6", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", @@ -4739,9 +5076,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.20", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", - "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==" + "version": "1.11.23", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz", + "integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==" }, "node_modules/debug": { "version": "4.4.3", @@ -4868,9 +5205,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", - "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.1.tgz", + "integrity": "sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==", "engines": { "node": ">=12" }, @@ -4916,11 +5253,31 @@ "node": ">= 0.4" } }, + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "optional": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4957,6 +5314,15 @@ "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "optional": true, + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.20.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", @@ -5263,6 +5629,15 @@ "node": ">= 0.6" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "optional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -5369,11 +5744,25 @@ "url": "https://opencollective.com/express" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, + "node_modules/farmhash-modern": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/farmhash-modern/-/farmhash-modern-1.1.0.tgz", + "integrity": "sha512-6ypT4XfgqJk/F3Yuv4SX26I3doUjt0GTG4a+JgWxXQpxXzTBq8fPUeGHfcYMMDPHJHm3yPOSjaeBwBGAHWXCdA==", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "devOptional": true }, "node_modules/fast-diff": { "version": "1.3.0", @@ -5399,9 +5788,9 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", + "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", "dev": true, "funding": [ { @@ -5414,6 +5803,56 @@ } ] }, + "node_modules/fast-xml-builder": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.3.1.tgz", + "integrity": "sha512-pIM/1n3ntFXKYrUZwW7QCK0gAW7XY+wzj1YMIV3tLDvPj/V+zTGJK5e3/4WJfwj0qWw2ElNXiTixda/R+3YSug==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "optional": true, + "dependencies": { + "path-expression-matcher": "^1.6.2", + "xml-naming": "^0.3.0" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.11.0.tgz", + "integrity": "sha512-9IGxMqvqLOnqP+Egi1nqDHKv5k8aZ7r9n558enxcucmyVGEBNPAU+MOg/8jPIS7rO7sSq4gFm1/nHtiaubMruw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "optional": true, + "dependencies": { + "@nodable/entities": "^3.0.0", + "fast-xml-builder": "^1.2.0", + "is-unsafe": "^2.0.0", + "path-expression-matcher": "^1.6.2", + "strnum": "^2.4.2", + "xml-naming": "^0.3.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -5517,6 +5956,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/firebase-admin": { + "version": "12.7.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-12.7.0.tgz", + "integrity": "sha512-raFIrOyTqREbyXsNkSHyciQLfv8AUZazehPaQS1lZBSCDYW74FYXU0nQZa3qHI4K+hawohlDbywZ4+qce9YNxA==", + "dependencies": { + "@fastify/busboy": "^3.0.0", + "@firebase/database-compat": "1.0.8", + "@firebase/database-types": "1.0.5", + "@types/node": "^22.0.1", + "farmhash-modern": "^1.1.0", + "jsonwebtoken": "^9.0.0", + "jwks-rsa": "^3.1.0", + "node-forge": "^1.3.1", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "@google-cloud/firestore": "^7.7.0", + "@google-cloud/storage": "^7.7.0" + } + }, "node_modules/flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -5546,9 +6008,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -5621,15 +6083,15 @@ } }, "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -5735,6 +6197,78 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "optional": true + }, + "node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "optional": true, + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "optional": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "optional": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/gcp-metadata": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", + "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", + "optional": true, + "dependencies": { + "gaxios": "^6.1.1", + "google-logging-utils": "^0.0.2", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -5817,17 +6351,17 @@ } }, "node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, "dependencies": { - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5861,24 +6395,24 @@ } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" } }, "node_modules/glob/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.8" }, "engines": { "node": "18 || 20 || >=22" @@ -5899,6 +6433,69 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/google-auth-library": { + "version": "9.15.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", + "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==", + "optional": true, + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-gax": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.6.1.tgz", + "integrity": "sha512-V6eky/xz2mcKfAd1Ioxyd6nmA61gao3n01C+YeuIwu3vzM9EDR6wcVzMSIbLMDXWeoi9SHYctXuKYC5uJUT3eQ==", + "optional": true, + "dependencies": { + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "google-auth-library": "^9.3.0", + "node-fetch": "^2.7.0", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-gax/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/google-logging-utils": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz", + "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -5916,10 +6513,23 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "optional": true, + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "dev": true, "dependencies": { "minimist": "^1.2.5", @@ -6004,9 +6614,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "dependencies": { "function-bind": "^1.1.2" }, @@ -6028,6 +6638,22 @@ "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", "peer": true }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "optional": true + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -6053,6 +6679,37 @@ "url": "https://opencollective.com/express" } }, + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "optional": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -6260,7 +6917,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" }, @@ -6294,6 +6951,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-unsafe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-2.0.0.tgz", + "integrity": "sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "optional": true + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -6546,9 +7215,9 @@ } }, "node_modules/jest-config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0" @@ -6697,18 +7366,6 @@ "fsevents": "^2.3.3" } }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/jest-leak-detector": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", @@ -6757,18 +7414,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/jest-mock": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", @@ -6927,9 +7572,9 @@ } }, "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0" @@ -7042,18 +7687,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/jest-validate": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", @@ -7133,6 +7766,14 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -7140,9 +7781,20 @@ "dev": true }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "dependencies": { "argparse": "^2.0.1" }, @@ -7162,6 +7814,15 @@ "node": ">=6" } }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "optional": true, + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -7216,6 +7877,61 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwks-rsa": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.2.2.tgz", + "integrity": "sha512-BqTyEDV+lS8F2trk3A+qJnxV5Q9EqKCBJOPti3W97r7qTympCZjb7h2X6f2kc+0K3rsSTY1/6YG2eaXKoj497w==", + "dependencies": { + "@types/jsonwebtoken": "^9.0.4", + "debug": "^4.3.4", + "jose": "^4.15.4", + "limiter": "^1.1.5", + "lru-memoizer": "^2.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/keyv": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", @@ -7252,6 +7968,11 @@ "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.41.tgz", "integrity": "sha512-lsmMmGXBxXIK/VMLEj0kL6MtUs1kBGj1nTCzi6zgQoG1DEwqwt2DQyHxcLykceIxAnfE3hya7NuIh6PpC6S3fA==" }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -7305,9 +8026,50 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==" + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "optional": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -7321,6 +8083,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -7351,6 +8118,31 @@ "yallist": "^3.0.2" } }, + "node_modules/lru-memoizer": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz", + "integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "6.0.0" + } + }, + "node_modules/lru-memoizer/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-memoizer/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/lru.min": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.4.tgz", @@ -7480,9 +8272,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "engines": { "node": ">=8.6" @@ -7570,9 +8362,9 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/multer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", - "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.2.0.tgz", + "integrity": "sha512-6rdyFg2kLrMh9Jee7/BMPuV9lEAd7lLW2YUpF9/YxR7njyoUwwQ0ZPh3TaIY50Sw6vlyD2HW3wGOkTS4P79xrQ==", "dependencies": { "append-field": "^1.0.0", "busboy": "^1.6.0", @@ -7717,6 +8509,34 @@ "lodash": "^4.17.21" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "optional": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "engines": { + "node": ">= 6.13.0" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -7729,6 +8549,14 @@ "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", "dev": true }, + "node_modules/nodemailer": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.1.tgz", + "integrity": "sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -7758,6 +8586,15 @@ "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "optional": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", @@ -7847,7 +8684,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "devOptional": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -7934,6 +8771,21 @@ "node": ">=8" } }, + "node_modules/path-expression-matcher": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.2.tgz", + "integrity": "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "optional": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -7968,18 +8820,18 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", "dev": true, "engines": { "node": "20 || >=22" } }, "node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/express" @@ -8082,9 +8934,9 @@ "dev": true }, "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "engines": { "node": ">=12" @@ -8280,6 +9132,41 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/proto3-json-serializer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", + "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", + "optional": true, + "dependencies": { + "protobufjs": "^7.2.5" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/protobufjs": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.5.tgz", + "integrity": "sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.5", + "@protobufjs/eventemitter": "^1.1.1", + "@protobufjs/fetch": "^1.1.1", + "@protobufjs/float": "^1.0.2", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.1", + "@types/node": ">=13.7.0", + "long": "^5.3.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -8293,9 +9180,12 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "engines": { + "node": ">=10" + } }, "node_modules/punycode": { "version": "2.3.1", @@ -8323,11 +9213,12 @@ ] }, "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", "dependencies": { - "side-channel": "^1.1.0" + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" }, "engines": { "node": ">=0.6" @@ -8500,6 +9391,29 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "optional": true, + "dependencies": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -8569,7 +9483,6 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -8680,13 +9593,13 @@ } }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, @@ -8698,12 +9611,12 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -8867,6 +9780,21 @@ "node": ">= 0.8" } }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "optional": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "optional": true + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -8976,6 +9904,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.4.2.tgz", + "integrity": "sha512-rDG3Ah4TV0k1hWvLSzkZtMmLN9+eS+h3knq4MP6A42Y3Yh5qGNnOUs1jJkoSr8FG5dsL28c7KgkIBzSEykqtuw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "optional": true, + "dependencies": { + "anynum": "^1.0.1" + } + }, "node_modules/strtok3": { "version": "10.3.4", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", @@ -8991,6 +9934,12 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "optional": true + }, "node_modules/superagent": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.3.0.tgz", @@ -9038,9 +9987,9 @@ } }, "node_modules/swagger-ui-dist": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.31.0.tgz", - "integrity": "sha512-zSUTIck02fSga6rc0RZP3b7J7wgHXwLea8ZjgLA3Vgnb8QeOl3Wou2/j5QkzSGeoz6HusP/coYuJl33aQxQZpg==", + "version": "5.32.13", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.32.13.tgz", + "integrity": "sha512-qQobzb3DeC2LeK0j3E8812Ef4aIq1y9flJxvZkimkqUC/w4u7wS+yCc+VakqGJLweUUBrI24effhwo8OsAvNAw==", "dependencies": { "@scarf/scarf": "=1.4.0" } @@ -9096,6 +10045,36 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "optional": true, + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/teeny-request/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/terser": { "version": "5.46.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", @@ -9303,18 +10282,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -9371,6 +10338,12 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "optional": true + }, "node_modules/ts-api-utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", @@ -9618,25 +10591,25 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typeorm": { - "version": "0.3.28", - "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.28.tgz", - "integrity": "sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.31.tgz", + "integrity": "sha512-6u9EFtdLBgHjnPm78NStVeM+I/1MolTzKykDDcydzKUkh6E++YS6XViU/fePJbvDvEGU4Xq34KOM/CLeer9I2A==", "dependencies": { "@sqltools/formatter": "^1.2.5", - "ansis": "^4.2.0", + "ansis": "^4.3.1", "app-root-path": "^3.1.0", "buffer": "^6.0.3", - "dayjs": "^1.11.19", + "dayjs": "^1.11.21", "debug": "^4.4.3", - "dedent": "^1.7.0", + "dedent": "^1.7.2", "dotenv": "^16.6.1", "glob": "^10.5.0", "reflect-metadata": "^0.2.2", "sha.js": "^2.4.12", "sql-highlight": "^6.1.0", "tslib": "^2.8.1", - "uuid": "^11.1.0", - "yargs": "^17.7.2" + "uuid": "^11.1.1", + "yargs": "^17.7.3" }, "bin": { "typeorm": "cli.js", @@ -9657,13 +10630,13 @@ "mongodb": "^5.8.0 || ^6.0.0", "mssql": "^9.1.1 || ^10.0.0 || ^11.0.0 || ^12.0.0", "mysql2": "^2.2.5 || ^3.0.1", - "oracledb": "^6.3.0", + "oracledb": "^6.3.0 || ^7.0.0", "pg": "^8.5.1", "pg-native": "^3.0.0", "pg-query-stream": "^4.0.0", "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", "sql.js": "^1.4.0", - "sqlite3": "^5.0.3", + "sqlite3": "^5.0.3 || ^6.0.0", "ts-node": "^10.7.0", "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" }, @@ -9718,10 +10691,18 @@ } } }, + "node_modules/typeorm/node_modules/ansis": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.3.1.tgz", + "integrity": "sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==", + "engines": { + "node": ">=14" + } + }, "node_modules/typeorm/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dependencies": { "balanced-match": "^1.0.0" } @@ -9814,6 +10795,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/typeorm/node_modules/uuid": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz", + "integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -9986,15 +10979,16 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "bin": { - "uuid": "dist/esm/bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { @@ -10064,12 +11058,17 @@ "defaults": "^1.0.3" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "optional": true + }, "node_modules/webpack": { - "version": "5.105.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", - "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", + "version": "5.106.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz", + "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", "dev": true, - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -10087,9 +11086,8 @@ "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.3.1", - "mime-types": "^2.1.27", + "mime-db": "^1.54.0", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", @@ -10136,7 +11134,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -10153,7 +11150,6 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "peer": true, "dependencies": { "ajv": "^8.0.0" }, @@ -10171,7 +11167,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -10184,7 +11179,6 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -10198,7 +11192,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "peer": true, "engines": { "node": ">=4.0" } @@ -10207,38 +11200,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, - "node_modules/webpack/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } + "dev": true }, "node_modules/webpack/node_modules/schema-utils": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, - "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -10253,6 +11221,37 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/websocket-driver": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.5.tgz", + "integrity": "sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "optional": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -10351,6 +11350,21 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/xml-naming": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.3.0.tgz", + "integrity": "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "optional": true, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -10374,9 +11388,9 @@ "dev": true }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -10411,7 +11425,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, + "devOptional": true, "engines": { "node": ">=10" }, diff --git a/apps/web/package-lock.json b/apps/web/package-lock.json index 7375836..cf9537f 100644 --- a/apps/web/package-lock.json +++ b/apps/web/package-lock.json @@ -30,12 +30,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", + "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -44,29 +44,29 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -83,13 +83,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", "dev": true, "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -99,13 +99,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -115,36 +115,36 @@ } }, "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "dev": true, "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -154,52 +154,52 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "dev": true, "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "dev": true, "dependencies": { - "@babel/types": "^7.29.0" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -209,31 +209,31 @@ } }, "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", "debug": "^4.3.1" }, "engines": { @@ -241,49 +241,18 @@ } }, "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@emnapi/core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", - "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", - "dev": true, - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", - "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", - "dev": true, - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", - "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", - "dev": true, - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", @@ -628,35 +597,19 @@ "resolved": "https://registry.npmjs.org/@maplibre/geojson-vt/-/geojson-vt-5.0.4.tgz", "integrity": "sha512-KGg9sma45S+stfH9vPCJk1J0lSDLWZgCT9Y8u8qWZJyjFlP8MNP1WGTxIMYJZjDvVT3PDn05kN1C95Sut1HpgQ==" }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", - "dev": true, - "optional": true, - "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - } - }, "node_modules/@oxc-project/types": { - "version": "0.120.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.120.0.tgz", - "integrity": "sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==", + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.144.0.tgz", + "integrity": "sha512-nuhZIOLuI6TFQ32I/WnUx+SCPY7SdSKwgnFHydAuoS1+Z4BRcaP+RRJmGzl9lw+0OFF7UmaESf7KQRXaNLHypg==", "dev": true, "funding": { "url": "https://github.com/sponsors/Boshen" } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.10.tgz", - "integrity": "sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.4.tgz", + "integrity": "sha512-jHC2cnyKz5xU2fhECtFl8OZ83cYNt13GZQD+0uMJ/X3o+ijmd56okHhTUwxVSHPx1IRVIJEZ1/1pPzeLCU6XKA==", "cpu": [ "arm64" ], @@ -670,9 +623,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.10.tgz", - "integrity": "sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-Dc5mPD8F5F/FS8i01syd7FTF6yB2fVthH/TRkjwJkzUK6EpoxHtqvZQP5Zwq80/5z19TWYHIg1KOHboCgVx/aQ==", "cpu": [ "arm64" ], @@ -686,9 +639,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.10.tgz", - "integrity": "sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.4.tgz", + "integrity": "sha512-fpDm4oBo6SqLvWUYCmFhdde3U9KH2fRNNMeAnAPAIwxRL345xutL0EtEUcuoxsoazdJGv/MuDBQHlCDrtbvqOg==", "cpu": [ "x64" ], @@ -702,9 +655,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.10.tgz", - "integrity": "sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.4.tgz", + "integrity": "sha512-rSJoreDE/HoIzoaib6MTp5jQtCTdMHKIvItAKT/ImS6Y6Ww76oUaeMyp4Vc/fAgd/ehji068IxetHXAnqUwN9A==", "cpu": [ "x64" ], @@ -718,9 +671,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.10.tgz", - "integrity": "sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.4.tgz", + "integrity": "sha512-/jm8OGHgn7oGaJu3i/qZI9spUGcJ+y/lk43ttQ/iO1tOd9NissG6o97bighBCiL+BKRngmcDuR6ikfwYdJmVuQ==", "cpu": [ "arm" ], @@ -734,9 +687,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.10.tgz", - "integrity": "sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.4.tgz", + "integrity": "sha512-tIP06BeD9EqvECBrPZ+sqdPlYrT+aYaAiu1wYziVx5elRK/ftm33JxVDy2bXGbr6J0CrtirCkR87/X5a2euEng==", "cpu": [ "arm64" ], @@ -750,9 +703,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.10.tgz", - "integrity": "sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.4.tgz", + "integrity": "sha512-Ql1Q0EQqVThvn9VAVlwNzsUvbSFtCMGjLpRRi4pk5i7NZZ4n5ISiLMjHYtus4VQ2PvkSw24zyaCVsiS+sXPj1w==", "cpu": [ "arm64" ], @@ -766,9 +719,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.10.tgz", - "integrity": "sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.4.tgz", + "integrity": "sha512-GjbjXD4XXfN19D0LZNbmiCBUoDiRACsYHr0yaIbbn8aFsXjHZifcYqu/W5Er5X2X990WjHXFrxarn5chzItorQ==", "cpu": [ "ppc64" ], @@ -782,9 +735,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.10.tgz", - "integrity": "sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.4.tgz", + "integrity": "sha512-p5WR0NOwaRmJ/B1b6IjEFLLivwEsf3PrdBIhRbhTCQisbo2SvHHpG4ELB/+FgQNnB88LTOF86upmJmbvZdQ2lw==", "cpu": [ "s390x" ], @@ -798,9 +751,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.10.tgz", - "integrity": "sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.4.tgz", + "integrity": "sha512-4/GyVjmhR+Tc6HLJvwc1sOhPqAZtySiSMesOZyX6JQ5XBxoTDEMKQzvo07NIK6nTon/SivlZqvhzvuVBNQhObQ==", "cpu": [ "x64" ], @@ -814,9 +767,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.10.tgz", - "integrity": "sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.4.tgz", + "integrity": "sha512-l9eeLsCNvPpmSXUej0etw/J1eqV0Jj1D5G/xG6YTijmE6dkv6E2QezgWbTfQk63v952DPqrjOCoiqxq7Bw0YUQ==", "cpu": [ "x64" ], @@ -830,9 +783,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.10.tgz", - "integrity": "sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.4.tgz", + "integrity": "sha512-e0F355MSTMm3+UOqtV3L24gFUp2N5m1f8L/7d56deik6va+AXdrt9F8LbzGpeWGWRbZEDq4m8NVnJDeBtf9DZg==", "cpu": [ "arm64" ], @@ -845,26 +798,10 @@ "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.10.tgz", - "integrity": "sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^1.1.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.10.tgz", - "integrity": "sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.4.tgz", + "integrity": "sha512-AWLi0uBRYh6QlE7OKhiz+phZC0qwtij2QZmhmOdsLdFn64m7oMpooE9ICE3lhm9xMb4SpDo2WbHcxX1iFLFtqw==", "cpu": [ "arm64" ], @@ -878,9 +815,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.10.tgz", - "integrity": "sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.4.tgz", + "integrity": "sha512-UwSDJOg3dqCAejWdxclJjCsh3Qq4vLYMDxmyHqo1btz3stK2VqgwNd3mm5tuIwzSlGIQ/1H9Hr+Zn09mrezNqQ==", "cpu": [ "x64" ], @@ -899,16 +836,6 @@ "integrity": "sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==", "dev": true }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -1007,6 +934,17 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", @@ -1050,13 +988,14 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", - "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", + "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.16.0", + "form-data": "^4.0.6", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/balanced-match": { @@ -1066,9 +1005,9 @@ "dev": true }, "node_modules/baseline-browser-mapping": { - "version": "2.10.9", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.9.tgz", - "integrity": "sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==", + "version": "2.11.15", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.15.tgz", + "integrity": "sha512-FwMjJJ7HnyZpWe+oWxegG0fezZyBZUagI5LZEoO3GCbtbKNwRfMH9Ue5d5v01PNePBy1QSfPSDTTeVL0Hb9EzA==", "dev": true, "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -1078,9 +1017,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -1088,9 +1027,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "version": "4.28.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz", + "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==", "dev": true, "funding": [ { @@ -1107,11 +1046,11 @@ } ], "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "baseline-browser-mapping": "^2.11.12", + "caniuse-lite": "^1.0.30001809", + "electron-to-chromium": "^1.5.402", + "node-releases": "^2.0.53", + "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" @@ -1142,9 +1081,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001780", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz", - "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==", + "version": "1.0.30001809", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz", + "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==", "dev": true, "funding": [ { @@ -1242,7 +1181,6 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, "dependencies": { "ms": "^2.1.3" }, @@ -1297,9 +1235,9 @@ "integrity": "sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==" }, "node_modules/electron-to-chromium": { - "version": "1.5.321", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", - "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", + "version": "1.5.409", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.409.tgz", + "integrity": "sha512-ChI4N44d0B4A6C8prnNjMOaGgE59fUyEVYcRYm2XEXIjMbbvF5i9UL1cblDbpGqiU0uS8FE8UcKxqZqTXdmzbQ==", "dev": true }, "node_modules/es-define-property": { @@ -1319,9 +1257,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "dependencies": { "es-errors": "^1.3.0" }, @@ -1621,9 +1559,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -1640,15 +1578,15 @@ } }, "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -1795,9 +1733,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "dependencies": { "function-bind": "^1.1.2" }, @@ -1820,6 +1758,18 @@ "hermes-estree": "0.25.1" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -1888,10 +1838,20 @@ "dev": true }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "dependencies": { "argparse": "^2.0.1" }, @@ -1979,9 +1939,9 @@ } }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, "dependencies": { "detect-libc": "^2.0.3" @@ -1994,23 +1954,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], @@ -2028,9 +1988,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -2048,9 +2008,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -2068,9 +2028,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -2088,9 +2048,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -2108,9 +2068,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], @@ -2128,9 +2088,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], @@ -2148,9 +2108,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], @@ -2168,9 +2128,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], @@ -2188,9 +2148,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -2208,9 +2168,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], @@ -2353,8 +2313,7 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/murmurhash-js": { "version": "1.0.0", @@ -2362,9 +2321,9 @@ "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "dev": true, "funding": [ { @@ -2386,10 +2345,13 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", - "dev": true + "version": "2.0.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", + "dev": true, + "engines": { + "node": ">=18" + } }, "node_modules/optionator": { "version": "0.9.4", @@ -2486,9 +2448,9 @@ "dev": true }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "engines": { "node": ">=12" @@ -2498,9 +2460,9 @@ } }, "node_modules/postcss": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", "dev": true, "funding": [ { @@ -2517,7 +2479,7 @@ } ], "dependencies": { - "nanoid": "^3.3.11", + "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -2540,14 +2502,17 @@ } }, "node_modules/protocol-buffers-schema": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.1.tgz", + "integrity": "sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==" }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "engines": { + "node": ">=10" + } }, "node_modules/punycode": { "version": "2.3.1", @@ -2600,13 +2565,13 @@ } }, "node_modules/rolldown": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.10.tgz", - "integrity": "sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.4.tgz", + "integrity": "sha512-rSr7irW0K7QRWzjdJXqZowkcRdDtjRduh43rBltnVKd0VFq839l1lJoDvGJb6gl7+4rTTCrPWu+YfujUL8Ug7w==", "dev": true, "dependencies": { - "@oxc-project/types": "=0.120.0", - "@rolldown/pluginutils": "1.0.0-rc.10" + "@oxc-project/types": "=0.144.0", + "@rolldown/pluginutils": "^1.0.0" }, "bin": { "rolldown": "bin/cli.mjs" @@ -2615,27 +2580,26 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.0-rc.10", - "@rolldown/binding-darwin-arm64": "1.0.0-rc.10", - "@rolldown/binding-darwin-x64": "1.0.0-rc.10", - "@rolldown/binding-freebsd-x64": "1.0.0-rc.10", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.10", - "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.10", - "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.10", - "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.10", - "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.10", - "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.10", - "@rolldown/binding-linux-x64-musl": "1.0.0-rc.10", - "@rolldown/binding-openharmony-arm64": "1.0.0-rc.10", - "@rolldown/binding-wasm32-wasi": "1.0.0-rc.10", - "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.10", - "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.10" + "@rolldown/binding-android-arm64": "1.2.4", + "@rolldown/binding-darwin-arm64": "1.2.4", + "@rolldown/binding-darwin-x64": "1.2.4", + "@rolldown/binding-freebsd-x64": "1.2.4", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.4", + "@rolldown/binding-linux-arm64-gnu": "1.2.4", + "@rolldown/binding-linux-arm64-musl": "1.2.4", + "@rolldown/binding-linux-ppc64-gnu": "1.2.4", + "@rolldown/binding-linux-s390x-gnu": "1.2.4", + "@rolldown/binding-linux-x64-gnu": "1.2.4", + "@rolldown/binding-linux-x64-musl": "1.2.4", + "@rolldown/binding-openharmony-arm64": "1.2.4", + "@rolldown/binding-win32-arm64-msvc": "1.2.4", + "@rolldown/binding-win32-x64-msvc": "1.2.4" } }, "node_modules/rolldown/node_modules/@rolldown/pluginutils": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.10.tgz", - "integrity": "sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true }, "node_modules/rw": { @@ -2720,13 +2684,13 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -2740,13 +2704,6 @@ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==" }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "optional": true - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -2760,9 +2717,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz", + "integrity": "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==", "dev": true, "funding": [ { @@ -2799,16 +2756,16 @@ } }, "node_modules/vite": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.1.tgz", - "integrity": "sha512-wt+Z2qIhfFt85uiyRt5LPU4oVEJBXj8hZNWKeqFG4gRG/0RaRGJ7njQCwzFVjO+v4+Ipmf5CY7VdmZRAYYBPHw==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.1.tgz", + "integrity": "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==", "dev": true, "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.8", - "rolldown": "1.0.0-rc.10", - "tinyglobby": "^0.2.15" + "lightningcss": "^1.33.0", + "picomatch": "^4.0.5", + "postcss": "^8.5.25", + "rolldown": "~1.2.1", + "tinyglobby": "^0.2.17" }, "bin": { "vite": "bin/vite.js" @@ -2824,8 +2781,8 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.1.0", - "esbuild": "^0.27.0", + "@vitejs/devtools": "^0.4.0", + "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", diff --git a/add-syria.sh b/infrastructure/migrations_archive/add-syria.sh similarity index 100% rename from add-syria.sh rename to infrastructure/migrations_archive/add-syria.sh diff --git a/fix_exact_border.sh b/infrastructure/migrations_archive/fix_exact_border.sh similarity index 100% rename from fix_exact_border.sh rename to infrastructure/migrations_archive/fix_exact_border.sh diff --git a/import_official_boundaries.sh b/infrastructure/migrations_archive/import_official_boundaries.sh similarity index 100% rename from import_official_boundaries.sh rename to infrastructure/migrations_archive/import_official_boundaries.sh diff --git a/import_syria_csv.sh b/infrastructure/migrations_archive/import_syria_csv.sh similarity index 100% rename from import_syria_csv.sh rename to infrastructure/migrations_archive/import_syria_csv.sh diff --git a/migrate_data.py b/infrastructure/migrations_archive/migrate_data.py similarity index 100% rename from migrate_data.py rename to infrastructure/migrations_archive/migrate_data.py diff --git a/migrate_jordan.py b/infrastructure/migrations_archive/migrate_jordan.py similarity index 100% rename from migrate_jordan.py rename to infrastructure/migrations_archive/migrate_jordan.py diff --git a/restore_osm_roads.sh b/infrastructure/migrations_archive/restore_osm_roads.sh similarity index 100% rename from restore_osm_roads.sh rename to infrastructure/migrations_archive/restore_osm_roads.sh diff --git a/revert_boundaries.sh b/infrastructure/migrations_archive/revert_boundaries.sh similarity index 100% rename from revert_boundaries.sh rename to infrastructure/migrations_archive/revert_boundaries.sh diff --git a/location.php b/infrastructure/telemetry/location.php similarity index 62% rename from location.php rename to infrastructure/telemetry/location.php index 3414c8f..ac87719 100644 --- a/location.php +++ b/infrastructure/telemetry/location.php @@ -1,6 +1,7 @@ 'Unauthorized access']); + echo json_encode(['error' => 'Unauthorized access: Invalid or missing API key']); exit; } -// 3. API Input (Optional days parameter, default 1) +// 2. API Input (Optional days parameter, default 1, max 100) $days = isset($_GET['days']) ? (int)$_GET['days'] : 1; -if ($days < 1 || $days > 100) $days = 1; +if ($days < 1) $days = 1; +if ($days > 100) $days = 100; -// SQL +// 3. SQL Query with Parameterized Bound Values $sql = " SELECT * FROM car_tracks - WHERE created_at >= NOW() - INTERVAL $days DAY + WHERE created_at >= NOW() - INTERVAL :days DAY ORDER BY created_at DESC "; try { $stmt = $con->prepare($sql); + $stmt->bindValue(':days', $days, PDO::PARAM_INT); $stmt->execute(); - // جلب كل النتائج دفعة واحدة $records = $stmt->fetchAll(PDO::FETCH_ASSOC); echo json_encode([ @@ -58,11 +60,10 @@ try { 'data' => $records ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} -catch (PDOException $e) { +} catch (PDOException $e) { http_response_code(500); echo json_encode([ 'error' => 'Database error', 'details' => $e->getMessage() ]); -} \ No newline at end of file +} diff --git a/project_source_code_light.txt b/project_source_code_light.txt deleted file mode 100644 index 0d73b90..0000000 --- a/project_source_code_light.txt +++ /dev/null @@ -1,101242 +0,0 @@ -============================================================ -ملفات المشروع المختارة (Style JSON + Source Code) -============================================================ - ------------------------------------------------------------- -[1] اسم الملف: setup_map2.sh -المسار: ./setup_map2.sh ------------------------------------------------------------- -0001 | #!/bin/bash -0002 | -0003 | # setup_map2.sh - Automated setup for the isolated Map-2 environment -0004 | # إعداد بيئة الخرائط الثانية المعزولة بالكامل -0005 | -0006 | echo "🚀 Starting Map-2 Environment Setup..." -0007 | -0008 | # 1. Create Data Directory on Server -0009 | echo "📂 Preparing data directory: infrastructure/osm-data-v2" -0010 | mkdir -p infrastructure/osm-data-v2 -0011 | -0012 | # 2. Check for PBF file -0013 | if [ ! -f "infrastructure/osm-data-v2/map2_enriched.osm.pbf" ]; then -0014 | echo "⚠️ No map2_enriched.osm.pbf found." -0015 | echo "💡 Copying existing master_map as a starting point..." -0016 | cp infrastructure/osm-data/master_map.osm.pbf infrastructure/osm-data-v2/map2_enriched.osm.pbf -0017 | fi -0018 | -0019 | # 3. Spin up the containers -0020 | echo "🏗️ Starting Map-2 Stack (DB, Redis, Tiles, Routing)..." -0021 | docker compose -f docker-compose.map2.yml up -d -0022 | -0023 | echo "✅ Map-2 is being provisioned." -0024 | echo "------------------------------------------------" -0025 | echo "Ports used:" -0026 | echo " - Martin (Tiles): 3203" -0027 | echo " - Database: 5433" -0028 | echo " - Routing: 8990" -0029 | echo " - Redis: 6382" -0030 | echo "------------------------------------------------" -0031 | echo "Intelligence Roadmap:" -0032 | echo "1. Run Overture downloader (Next step)" -0033 | echo "2. Inject Arabic names via Overpass API" -0034 | echo "3. Connect Martin to the new DB" - - ------------------------------------------------------------- -[2] اسم الملف: style.json -المسار: ./style.json ------------------------------------------------------------- -0001 | { -0002 | "version": 8, -0003 | "name": "Intaleq Premium Map Style", -0004 | "metadata": { -0005 | "brand": "Intaleq", -0006 | "version": "2.0.0", -0007 | "description": "Google + OSM hybrid style with 3D buildings, railways, subway, waterways, and Intaleq brand palette" -0008 | }, -0009 | "center": [ -0010 | 36.276008, -0011 | 33.513685 -0012 | ], -0013 | "zoom": 15, -0014 | "glyphs": "https://cdn.protomaps.com/fonts/pbf/{fontstack}/{range}.pbf", -0015 | "sprite": "https://demotiles.maplibre.org/styles/osm-bright-gl-style/sprite", -0016 | "sources": { -0017 | "local-osm-polygons": { -0018 | "type": "vector", -0019 | "tiles": [ -0020 | "https://tiles.intaleqapp.com/planet_osm_polygon/{z}/{x}/{y}" -0021 | ], -0022 | "maxzoom": 14, -0023 | "attribution": "© Intaleq | © OpenStreetMap contributors" -0024 | }, -0025 | "local-osm-lines": { -0026 | "type": "vector", -0027 | "tiles": [ -0028 | "https://tiles.intaleqapp.com/planet_osm_line/{z}/{x}/{y}" -0029 | ], -0030 | "maxzoom": 14 -0031 | }, -0032 | "local-osm-points": { -0033 | "type": "vector", -0034 | "tiles": [ -0035 | "https://tiles.intaleqapp.com/planet_osm_point/{z}/{x}/{y}" -0036 | ], -0037 | "maxzoom": 14 -0038 | }, -0039 | "places_egypt": { -0040 | "type": "vector", -0041 | "tiles": [ -0042 | "https://tiles.intaleqapp.com/places_egypt/{z}/{x}/{y}" -0043 | ], -0044 | "maxzoom": 14 -0045 | } -0046 | }, -0047 | "layers": [ -0048 | { -0049 | "id": "background", -0050 | "type": "background", -0051 | "paint": { -0052 | "background-color": "#EEF2F7" -0053 | } -0054 | }, -0055 | { -0056 | "id": "landuse-residential", -0057 | "type": "fill", -0058 | "source": "local-osm-polygons", -0059 | "source-layer": "planet_osm_polygon", -0060 | "filter": [ -0061 | "==", -0062 | "landuse", -0063 | "residential" -0064 | ], -0065 | "paint": { -0066 | "fill-color": "#F0F4F8", -0067 | "fill-opacity": 1 -0068 | } -0069 | }, -0070 | { -0071 | "id": "landuse-commercial", -0072 | "type": "fill", -0073 | "source": "local-osm-polygons", -0074 | "source-layer": "planet_osm_polygon", -0075 | "filter": [ -0076 | "==", -0077 | "landuse", -0078 | "commercial" -0079 | ], -0080 | "paint": { -0081 | "fill-color": "#FAF5EE", -0082 | "fill-opacity": 1 -0083 | } -0084 | }, -0085 | { -0086 | "id": "landuse-industrial", -0087 | "type": "fill", -0088 | "source": "local-osm-polygons", -0089 | "source-layer": "planet_osm_polygon", -0090 | "filter": [ -0091 | "in", -0092 | "landuse", -0093 | "industrial", -0094 | "railway" -0095 | ], -0096 | "paint": { -0097 | "fill-color": "#E4E8EE", -0098 | "fill-opacity": 1 -0099 | } -0100 | }, -0101 | { -0102 | "id": "landuse-cemetery", -0103 | "type": "fill", -0104 | "source": "local-osm-polygons", -0105 | "source-layer": "planet_osm_polygon", -0106 | "filter": [ -0107 | "==", -0108 | "landuse", -0109 | "cemetery" -0110 | ], -0111 | "paint": { -0112 | "fill-color": "#B8D4BA", -0113 | "fill-opacity": 0.9 -0114 | } -0115 | }, -0116 | { -0117 | "id": "landuse-military", -0118 | "type": "fill", -0119 | "source": "local-osm-polygons", -0120 | "source-layer": "planet_osm_polygon", -0121 | "filter": [ -0122 | "==", -0123 | "landuse", -0124 | "military" -0125 | ], -0126 | "paint": { -0127 | "fill-color": "#E2D9CC", -0128 | "fill-opacity": 0.8 -0129 | } -0130 | }, -0131 | { -0132 | "id": "park-layer", -0133 | "type": "fill", -0134 | "source": "local-osm-polygons", -0135 | "source-layer": "planet_osm_polygon", -0136 | "filter": [ -0137 | "any", -0138 | [ -0139 | "in", -0140 | "leisure", -0141 | "park", -0142 | "garden", -0143 | "nature_reserve", -0144 | "pitch", -0145 | "playground" -0146 | ], -0147 | [ -0148 | "in", -0149 | "landuse", -0150 | "grass", -0151 | "meadow", -0152 | "forest" -0153 | ], -0154 | [ -0155 | "in", -0156 | "natural", -0157 | "wood", -0158 | "scrub", -0159 | "heath" -0160 | ] -0161 | ], -0162 | "paint": { -0163 | "fill-color": [ -0164 | "match", -0165 | [ -0166 | "get", -0167 | "leisure" -0168 | ], -0169 | "pitch", -0170 | "#9ED4A0", -0171 | "playground", -0172 | "#B8E6B8", -0173 | "#C5E8C5" -0174 | ], -0175 | "fill-opacity": 0.85 -0176 | } -0177 | }, -0178 | { -0179 | "id": "park-outline", -0180 | "type": "line", -0181 | "source": "local-osm-polygons", -0182 | "source-layer": "planet_osm_polygon", -0183 | "filter": [ -0184 | "in", -0185 | "leisure", -0186 | "park", -0187 | "garden", -0188 | "nature_reserve" -0189 | ], -0190 | "paint": { -0191 | "line-color": "#94D4A0", -0192 | "line-width": 0.8, -0193 | "line-opacity": 0.7 -0194 | } -0195 | }, -0196 | { -0197 | "id": "water-polygon", -0198 | "type": "fill", -0199 | "source": "local-osm-polygons", -0200 | "source-layer": "planet_osm_polygon", -0201 | "filter": [ -0202 | "any", -0203 | [ -0204 | "in", -0205 | "natural", -0206 | "water", -0207 | "lake", -0208 | "bay" -0209 | ], -0210 | [ -0211 | "==", -0212 | "waterway", -0213 | "riverbank" -0214 | ], -0215 | [ -0216 | "in", -0217 | "landuse", -0218 | "basin", -0219 | "reservoir" -0220 | ], -0221 | [ -0222 | "==", -0223 | "amenity", -0224 | "fountain" -0225 | ] -0226 | ], -0227 | "paint": { -0228 | "fill-color": "#9ECFE8", -0229 | "fill-opacity": 0.95 -0230 | } -0231 | }, -0232 | { -0233 | "id": "water-polygon-outline", -0234 | "type": "line", -0235 | "source": "local-osm-polygons", -0236 | "source-layer": "planet_osm_polygon", -0237 | "filter": [ -0238 | "any", -0239 | [ -0240 | "in", -0241 | "natural", -0242 | "water", -0243 | "lake", -0244 | "bay" -0245 | ], -0246 | [ -0247 | "==", -0248 | "waterway", -0249 | "riverbank" -0250 | ], -0251 | [ -0252 | "in", -0253 | "landuse", -0254 | "basin", -0255 | "reservoir" -0256 | ] -0257 | ], -0258 | "paint": { -0259 | "line-color": "#6BB8D8", -0260 | "line-width": 0.8, -0261 | "line-opacity": 0.8 -0262 | } -0263 | }, -0264 | { -0265 | "id": "waterway-river", -0266 | "type": "line", -0267 | "source": "local-osm-lines", -0268 | "source-layer": "planet_osm_line", -0269 | "filter": [ -0270 | "all", -0271 | [ -0272 | "in", -0273 | "waterway", -0274 | "river", -0275 | "canal" -0276 | ], -0277 | [ -0278 | "!=", -0279 | "intermittent", -0280 | "yes" -0281 | ], -0282 | [ -0283 | "!=", -0284 | "seasonal", -0285 | "yes" -0286 | ], -0287 | [ -0288 | "!=", -0289 | "tunnel", -0290 | "yes" -0291 | ] -0292 | ], -0293 | "paint": { -0294 | "line-color": "#6BB8D8", -0295 | "line-width": [ -0296 | "interpolate", -0297 | [ -0298 | "linear" -0299 | ], -0300 | [ -0301 | "zoom" -0302 | ], -0303 | 10, -0304 | 1.5, -0305 | 14, -0306 | 4, -0307 | 16, -0308 | 7 -0309 | ], -0310 | "line-opacity": 0.95 -0311 | } -0312 | }, -0313 | { -0314 | "id": "waterway-stream-drain", -0315 | "type": "line", -0316 | "source": "local-osm-lines", -0317 | "source-layer": "planet_osm_line", -0318 | "filter": [ -0319 | "all", -0320 | [ -0321 | "in", -0322 | "waterway", -0323 | "stream", -0324 | "drain", -0325 | "ditch" -0326 | ], -0327 | [ -0328 | "!=", -0329 | "intermittent", -0330 | "yes" -0331 | ], -0332 | [ -0333 | "!=", -0334 | "seasonal", -0335 | "yes" -0336 | ], -0337 | [ -0338 | "!=", -0339 | "tunnel", -0340 | "yes" -0341 | ] -0342 | ], -0343 | "minzoom": 13, -0344 | "paint": { -0345 | "line-color": "#7FBFD8", -0346 | "line-width": [ -0347 | "interpolate", -0348 | [ -0349 | "linear" -0350 | ], -0351 | [ -0352 | "zoom" -0353 | ], -0354 | 13, -0355 | 0.8, -0356 | 16, -0357 | 2.5 -0358 | ], -0359 | "line-opacity": 0.85 -0360 | } -0361 | }, -0362 | { -0363 | "id": "railway-area", -0364 | "type": "fill", -0365 | "source": "local-osm-polygons", -0366 | "source-layer": "planet_osm_polygon", -0367 | "filter": [ -0368 | "==", -0369 | "landuse", -0370 | "railway" -0371 | ], -0372 | "paint": { -0373 | "fill-color": "#DDE2EA", -0374 | "fill-opacity": 0.9 -0375 | } -0376 | }, -0377 | { -0378 | "id": "railway-rail-casing", -0379 | "type": "line", -0380 | "source": "local-osm-lines", -0381 | "source-layer": "planet_osm_line", -0382 | "filter": [ -0383 | "all", -0384 | [ -0385 | "in", -0386 | "railway", -0387 | "rail", -0388 | "narrow_gauge", -0389 | "preserved" -0390 | ], -0391 | [ -0392 | "!=", -0393 | "service", -0394 | "yard" -0395 | ], -0396 | [ -0397 | "!=", -0398 | "service", -0399 | "siding" -0400 | ] -0401 | ], -0402 | "minzoom": 8, -0403 | "paint": { -0404 | "line-color": "#B0B8C5", -0405 | "line-width": [ -0406 | "interpolate", -0407 | [ -0408 | "linear" -0409 | ], -0410 | [ -0411 | "zoom" -0412 | ], -0413 | 8, -0414 | 2, -0415 | 12, -0416 | 4, -0417 | 16, -0418 | 8 -0419 | ] -0420 | } -0421 | }, -0422 | { -0423 | "id": "railway-rail-core", -0424 | "type": "line", -0425 | "source": "local-osm-lines", -0426 | "source-layer": "planet_osm_line", -0427 | "filter": [ -0428 | "all", -0429 | [ -0430 | "in", -0431 | "railway", -0432 | "rail", -0433 | "narrow_gauge", -0434 | "preserved" -0435 | ], -0436 | [ -0437 | "!=", -0438 | "service", -0439 | "yard" -0440 | ], -0441 | [ -0442 | "!=", -0443 | "service", -0444 | "siding" -0445 | ] -0446 | ], -0447 | "minzoom": 8, -0448 | "paint": { -0449 | "line-color": "#6B7A8E", -0450 | "line-width": [ -0451 | "interpolate", -0452 | [ -0453 | "linear" -0454 | ], -0455 | [ -0456 | "zoom" -0457 | ], -0458 | 8, -0459 | 1, -0460 | 12, -0461 | 2.5, -0462 | 16, -0463 | 5 -0464 | ], -0465 | "line-dasharray": [ -0466 | 6, -0467 | 4 -0468 | ] -0469 | } -0470 | }, -0471 | { -0472 | "id": "railway-subway-casing", -0473 | "type": "line", -0474 | "source": "local-osm-lines", -0475 | "source-layer": "planet_osm_line", -0476 | "filter": [ -0477 | "in", -0478 | "railway", -0479 | "subway", -0480 | "light_rail", -0481 | "tram", -0482 | "monorail" -0483 | ], -0484 | "minzoom": 10, -0485 | "paint": { -0486 | "line-color": [ -0487 | "match", -0488 | [ -0489 | "get", -0490 | "railway" -0491 | ], -0492 | "subway", -0493 | "#CC2233", -0494 | "light_rail", -0495 | "#0066CC", -0496 | "tram", -0497 | "#8833BB", -0498 | "monorail", -0499 | "#008855", -0500 | "#BB3344" -0501 | ], -0502 | "line-width": [ -0503 | "interpolate", -0504 | [ -0505 | "linear" -0506 | ], -0507 | [ -0508 | "zoom" -0509 | ], -0510 | 10, -0511 | 3, -0512 | 14, -0513 | 6, -0514 | 16, -0515 | 10 -0516 | ] -0517 | } -0518 | }, -0519 | { -0520 | "id": "railway-subway-core", -0521 | "type": "line", -0522 | "source": "local-osm-lines", -0523 | "source-layer": "planet_osm_line", -0524 | "filter": [ -0525 | "in", -0526 | "railway", -0527 | "subway", -0528 | "light_rail", -0529 | "tram", -0530 | "monorail" -0531 | ], -0532 | "minzoom": 10, -0533 | "paint": { -0534 | "line-color": [ -0535 | "match", -0536 | [ -0537 | "get", -0538 | "railway" -0539 | ], -0540 | "subway", -0541 | "#FF3347", -0542 | "light_rail", -0543 | "#2288FF", -0544 | "tram", -0545 | "#AA44EE", -0546 | "monorail", -0547 | "#00BB66", -0548 | "#FF4455" -0549 | ], -0550 | "line-width": [ -0551 | "interpolate", -0552 | [ -0553 | "linear" -0554 | ], -0555 | [ -0556 | "zoom" -0557 | ], -0558 | 10, -0559 | 1.5, -0560 | 14, -0561 | 3.5, -0562 | 16, -0563 | 6 -0564 | ] -0565 | } -0566 | }, -0567 | { -0568 | "id": "road-casing-track-path", -0569 | "type": "line", -0570 | "source": "local-osm-lines", -0571 | "source-layer": "planet_osm_line", -0572 | "filter": [ -0573 | "in", -0574 | "highway", -0575 | "track", -0576 | "path", -0577 | "footway", -0578 | "cycleway", -0579 | "steps" -0580 | ], -0581 | "minzoom": 14, -0582 | "paint": { -0583 | "line-color": "#C8CDD6", -0584 | "line-width": [ -0585 | "interpolate", -0586 | [ -0587 | "linear" -0588 | ], -0589 | [ -0590 | "zoom" -0591 | ], -0592 | 14, -0593 | 1, -0594 | 16, -0595 | 4 -0596 | ], -0597 | "line-dasharray": [ -0598 | 4, -0599 | 3 -0600 | ] -0601 | } -0602 | }, -0603 | { -0604 | "id": "road-casing-minor", -0605 | "type": "line", -0606 | "source": "local-osm-lines", -0607 | "source-layer": "planet_osm_line", -0608 | "filter": [ -0609 | "in", -0610 | "highway", -0611 | "residential", -0612 | "service", -0613 | "unclassified", -0614 | "living_street", -0615 | "pedestrian" -0616 | ], -0617 | "paint": { -0618 | "line-color": "#D4D8DF", -0619 | "line-width": [ -0620 | "interpolate", -0621 | [ -0622 | "linear" -0623 | ], -0624 | [ -0625 | "zoom" -0626 | ], -0627 | 12, -0628 | 1.5, -0629 | 16, -0630 | 10 -0631 | ], -0632 | "line-opacity": 0.7 -0633 | } -0634 | }, -0635 | { -0636 | "id": "road-core-minor", -0637 | "type": "line", -0638 | "source": "local-osm-lines", -0639 | "source-layer": "planet_osm_line", -0640 | "filter": [ -0641 | "in", -0642 | "highway", -0643 | "residential", -0644 | "service", -0645 | "unclassified", -0646 | "living_street", -0647 | "pedestrian" -0648 | ], -0649 | "paint": { -0650 | "line-color": "#FFFFFF", -0651 | "line-width": [ -0652 | "interpolate", -0653 | [ -0654 | "linear" -0655 | ], -0656 | [ -0657 | "zoom" -0658 | ], -0659 | 12, -0660 | 0.8, -0661 | 16, -0662 | 8 -0663 | ] -0664 | } -0665 | }, -0666 | { -0667 | "id": "road-casing-tertiary", -0668 | "type": "line", -0669 | "source": "local-osm-lines", -0670 | "source-layer": "planet_osm_line", -0671 | "filter": [ -0672 | "in", -0673 | "highway", -0674 | "tertiary", -0675 | "tertiary_link" -0676 | ], -0677 | "paint": { -0678 | "line-color": "#C9CED8", -0679 | "line-width": [ -0680 | "interpolate", -0681 | [ -0682 | "linear" -0683 | ], -0684 | [ -0685 | "zoom" -0686 | ], -0687 | 11, -0688 | 2, -0689 | 16, -0690 | 14 -0691 | ], -0692 | "line-opacity": 0.75 -0693 | } -0694 | }, -0695 | { -0696 | "id": "road-core-tertiary", -0697 | "type": "line", -0698 | "source": "local-osm-lines", -0699 | "source-layer": "planet_osm_line", -0700 | "filter": [ -0701 | "in", -0702 | "highway", -0703 | "tertiary", -0704 | "tertiary_link" -0705 | ], -0706 | "paint": { -0707 | "line-color": "#FFFFFF", -0708 | "line-width": [ -0709 | "interpolate", -0710 | [ -0711 | "linear" -0712 | ], -0713 | [ -0714 | "zoom" -0715 | ], -0716 | 11, -0717 | 1.2, -0718 | 16, -0719 | 11 -0720 | ] -0721 | } -0722 | }, -0723 | { -0724 | "id": "road-casing-secondary", -0725 | "type": "line", -0726 | "source": "local-osm-lines", -0727 | "source-layer": "planet_osm_line", -0728 | "filter": [ -0729 | "in", -0730 | "highway", -0731 | "secondary", -0732 | "secondary_link" -0733 | ], -0734 | "paint": { -0735 | "line-color": "#C4CFDE", -0736 | "line-width": [ -0737 | "interpolate", -0738 | [ -0739 | "linear" -0740 | ], -0741 | [ -0742 | "zoom" -0743 | ], -0744 | 11, -0745 | 2.5, -0746 | 16, -0747 | 16 -0748 | ], -0749 | "line-opacity": 0.8 -0750 | } -0751 | }, -0752 | { -0753 | "id": "road-core-secondary", -0754 | "type": "line", -0755 | "source": "local-osm-lines", -0756 | "source-layer": "planet_osm_line", -0757 | "filter": [ -0758 | "in", -0759 | "highway", -0760 | "secondary", -0761 | "secondary_link" -0762 | ], -0763 | "paint": { -0764 | "line-color": "#F8FBFF", -0765 | "line-width": [ -0766 | "interpolate", -0767 | [ -0768 | "linear" -0769 | ], -0770 | [ -0771 | "zoom" -0772 | ], -0773 | 11, -0774 | 1.8, -0775 | 16, -0776 | 13 -0777 | ] -0778 | } -0779 | }, -0780 | { -0781 | "id": "road-casing-primary", -0782 | "type": "line", -0783 | "source": "local-osm-lines", -0784 | "source-layer": "planet_osm_line", -0785 | "filter": [ -0786 | "in", -0787 | "highway", -0788 | "primary", -0789 | "primary_link" -0790 | ], -0791 | "paint": { -0792 | "line-color": "#C8B868", -0793 | "line-width": [ -0794 | "interpolate", -0795 | [ -0796 | "linear" -0797 | ], -0798 | [ -0799 | "zoom" -0800 | ], -0801 | 10, -0802 | 3, -0803 | 16, -0804 | 18 -0805 | ], -0806 | "line-opacity": 0.7 -0807 | } -0808 | }, -0809 | { -0810 | "id": "road-core-primary", -0811 | "type": "line", -0812 | "source": "local-osm-lines", -0813 | "source-layer": "planet_osm_line", -0814 | "filter": [ -0815 | "in", -0816 | "highway", -0817 | "primary", -0818 | "primary_link" -0819 | ], -0820 | "paint": { -0821 | "line-color": "#EDD870", -0822 | "line-width": [ -0823 | "interpolate", -0824 | [ -0825 | "linear" -0826 | ], -0827 | [ -0828 | "zoom" -0829 | ], -0830 | 10, -0831 | 2, -0832 | 16, -0833 | 14 -0834 | ] -0835 | } -0836 | }, -0837 | { -0838 | "id": "road-casing-motorway-trunk", -0839 | "type": "line", -0840 | "source": "local-osm-lines", -0841 | "source-layer": "planet_osm_line", -0842 | "filter": [ -0843 | "in", -0844 | "highway", -0845 | "motorway", -0846 | "motorway_link", -0847 | "trunk", -0848 | "trunk_link" -0849 | ], -0850 | "paint": { -0851 | "line-color": "#C8A84B", -0852 | "line-width": [ -0853 | "interpolate", -0854 | [ -0855 | "linear" -0856 | ], -0857 | [ -0858 | "zoom" -0859 | ], -0860 | 9, -0861 | 4, -0862 | 16, -0863 | 20 -0864 | ], -0865 | "line-opacity": 0.75 -0866 | } -0867 | }, -0868 | { -0869 | "id": "road-core-motorway-trunk", -0870 | "type": "line", -0871 | "source": "local-osm-lines", -0872 | "source-layer": "planet_osm_line", -0873 | "filter": [ -0874 | "in", -0875 | "highway", -0876 | "motorway", -0877 | "motorway_link", -0878 | "trunk", -0879 | "trunk_link" -0880 | ], -0881 | "paint": { -0882 | "line-color": "#F0C040", -0883 | "line-width": [ -0884 | "interpolate", -0885 | [ -0886 | "linear" -0887 | ], -0888 | [ -0889 | "zoom" -0890 | ], -0891 | 9, -0892 | 2.5, -0893 | 16, -0894 | 16 -0895 | ] -0896 | } -0897 | }, -0898 | { -0899 | "id": "building-fill-flat", -0900 | "type": "fill", -0901 | "source": "local-osm-polygons", -0902 | "source-layer": "planet_osm_polygon", -0903 | "filter": [ -0904 | "has", -0905 | "building" -0906 | ], -0907 | "maxzoom": 14, -0908 | "paint": { -0909 | "fill-color": "#DDD8D0", -0910 | "fill-opacity": 0.85, -0911 | "fill-outline-color": "#C4BEB4" -0912 | } -0913 | }, -0914 | { -0915 | "id": "building-3d", -0916 | "type": "fill-extrusion", -0917 | "source": "local-osm-polygons", -0918 | "source-layer": "planet_osm_polygon", -0919 | "minzoom": 14, -0920 | "filter": [ -0921 | "has", -0922 | "building" -0923 | ], -0924 | "paint": { -0925 | "fill-extrusion-color": [ -0926 | "match", -0927 | [ -0928 | "get", -0929 | "building" -0930 | ], -0931 | "commercial", -0932 | "#DDD5C5", -0933 | "retail", -0934 | "#E5D8C8", -0935 | "industrial", -0936 | "#D2D8E0", -0937 | "church", -0938 | "#DDD4EE", -0939 | "mosque", -0940 | "#CCE4D0", -0941 | "hospital", -0942 | "#EDD8D8", -0943 | "school", -0944 | "#E0E6CC", -0945 | "university", -0946 | "#D8E0C8", -0947 | "hotel", -0948 | "#D8DCF0", -0949 | "apartments", -0950 | "#E0DCD4", -0951 | "#DDD8D2" -0952 | ], -0953 | "fill-extrusion-height": [ -0954 | "interpolate", -0955 | [ -0956 | "linear" -0957 | ], -0958 | [ -0959 | "zoom" -0960 | ], -0961 | 14, -0962 | [ -0963 | "*", -0964 | [ -0965 | "coalesce", -0966 | [ -0967 | "to-number", -0968 | [ -0969 | "get", -0970 | "building:levels" -0971 | ], -0972 | null -0973 | ], -0974 | 3 -0975 | ], -0976 | 2.5 -0977 | ], -0978 | 17, -0979 | [ -0980 | "coalesce", -0981 | [ -0982 | "to-number", -0983 | [ -0984 | "get", -0985 | "height" -0986 | ], -0987 | null -0988 | ], -0989 | [ -0990 | "*", -0991 | [ -0992 | "to-number", -0993 | [ -0994 | "get", -0995 | "building:levels" -0996 | ], -0997 | 3 -0998 | ], -0999 | 3.5 -1000 | ], -1001 | 12 -1002 | ] -1003 | ], -1004 | "fill-extrusion-base": [ -1005 | "coalesce", -1006 | [ -1007 | "to-number", -1008 | [ -1009 | "get", -1010 | "min_height" -1011 | ], -1012 | null -1013 | ], -1014 | 0 -1015 | ], -1016 | "fill-extrusion-opacity": [ -1017 | "interpolate", -1018 | [ -1019 | "linear" -1020 | ], -1021 | [ -1022 | "zoom" -1023 | ], -1024 | 14, -1025 | 0.6, -1026 | 16, -1027 | 0.88 -1028 | ], -1029 | "fill-extrusion-vertical-gradient": true -1030 | } -1031 | }, -1032 | { -1033 | "id": "railway-label", -1034 | "type": "symbol", -1035 | "source": "local-osm-lines", -1036 | "source-layer": "planet_osm_line", -1037 | "filter": [ -1038 | "in", -1039 | "railway", -1040 | "rail", -1041 | "subway", -1042 | "light_rail", -1043 | "tram" -1044 | ], -1045 | "minzoom": 13, -1046 | "layout": { -1047 | "text-field": [ -1048 | "coalesce", -1049 | [ -1050 | "get", -1051 | "name:ar" -1052 | ], -1053 | [ -1054 | "get", -1055 | "name" -1056 | ], -1057 | "" -1058 | ], -1059 | "text-font": [ -1060 | "Noto Sans Regular" -1061 | ], -1062 | "text-size": 10, -1063 | "symbol-placement": "line", -1064 | "text-padding": 6, -1065 | "text-allow-overlap": false -1066 | }, -1067 | "paint": { -1068 | "text-color": [ -1069 | "match", -1070 | [ -1071 | "get", -1072 | "railway" -1073 | ], -1074 | "subway", -1075 | "#CC2233", -1076 | "light_rail", -1077 | "#0055BB", -1078 | "tram", -1079 | "#7722AA", -1080 | "#4A5568" -1081 | ], -1082 | "text-halo-color": "rgba(255,255,255,0.9)", -1083 | "text-halo-width": 2 -1084 | } -1085 | }, -1086 | { -1087 | "id": "waterway-label", -1088 | "type": "symbol", -1089 | "source": "local-osm-lines", -1090 | "source-layer": "planet_osm_line", -1091 | "filter": [ -1092 | "all", -1093 | [ -1094 | "in", -1095 | "waterway", -1096 | "river", -1097 | "canal" -1098 | ], -1099 | [ -1100 | "!=", -1101 | "intermittent", -1102 | "yes" -1103 | ], -1104 | [ -1105 | "has", -1106 | "name" -1107 | ] -1108 | ], -1109 | "minzoom": 12, -1110 | "layout": { -1111 | "text-field": [ -1112 | "coalesce", -1113 | [ -1114 | "get", -1115 | "name:ar" -1116 | ], -1117 | [ -1118 | "get", -1119 | "name" -1120 | ], -1121 | "" -1122 | ], -1123 | "text-font": [ -1124 | "Noto Sans Regular" -1125 | ], -1126 | "text-size": 11, -1127 | "symbol-placement": "line", -1128 | "text-letter-spacing": 0.1 -1129 | }, -1130 | "paint": { -1131 | "text-color": "#2E86AB", -1132 | "text-halo-color": "rgba(255,255,255,0.85)", -1133 | "text-halo-width": 2 -1134 | } -1135 | }, -1136 | { -1137 | "id": "building-number-polygon", -1138 | "type": "symbol", -1139 | "source": "local-osm-polygons", -1140 | "source-layer": "planet_osm_polygon", -1141 | "minzoom": 17, -1142 | "filter": [ -1143 | "has", -1144 | "addr:housenumber" -1145 | ], -1146 | "layout": { -1147 | "text-field": "{addr:housenumber}", -1148 | "text-font": [ -1149 | "Noto Sans Regular" -1150 | ], -1151 | "text-size": 10, -1152 | "text-allow-overlap": false, -1153 | "text-ignore-placement": false -1154 | }, -1155 | "paint": { -1156 | "text-color": "#5A5048", -1157 | "text-halo-color": "rgba(255,255,255,0.95)", -1158 | "text-halo-width": 1.5 -1159 | } -1160 | }, -1161 | { -1162 | "id": "building-number-point", -1163 | "type": "symbol", -1164 | "source": "local-osm-points", -1165 | "source-layer": "planet_osm_point", -1166 | "minzoom": 17, -1167 | "filter": [ -1168 | "has", -1169 | "addr:housenumber" -1170 | ], -1171 | "layout": { -1172 | "text-field": "{addr:housenumber}", -1173 | "text-font": [ -1174 | "Noto Sans Regular" -1175 | ], -1176 | "text-size": 10, -1177 | "text-allow-overlap": false -1178 | }, -1179 | "paint": { -1180 | "text-color": "#5A5048", -1181 | "text-halo-color": "rgba(255,255,255,0.95)", -1182 | "text-halo-width": 1.5 -1183 | } -1184 | }, -1185 | { -1186 | "id": "road-labels-minor", -1187 | "type": "symbol", -1188 | "source": "local-osm-lines", -1189 | "source-layer": "planet_osm_line", -1190 | "filter": [ -1191 | "in", -1192 | "highway", -1193 | "residential", -1194 | "service", -1195 | "unclassified", -1196 | "living_street" -1197 | ], -1198 | "minzoom": 16, -1199 | "layout": { -1200 | "text-field": [ -1201 | "coalesce", -1202 | [ -1203 | "get", -1204 | "name:ar" -1205 | ], -1206 | [ -1207 | "get", -1208 | "name" -1209 | ], -1210 | "" -1211 | ], -1212 | "text-font": [ -1213 | "Noto Sans Regular" -1214 | ], -1215 | "text-size": 11, -1216 | "symbol-placement": "line", -1217 | "text-letter-spacing": 0.04, -1218 | "text-padding": 4, -1219 | "text-allow-overlap": false -1220 | }, -1221 | "paint": { -1222 | "text-color": "#4A5568", -1223 | "text-halo-color": "rgba(255,255,255,0.85)", -1224 | "text-halo-width": 1.5 -1225 | } -1226 | }, -1227 | { -1228 | "id": "road-labels-major", -1229 | "type": "symbol", -1230 | "source": "local-osm-lines", -1231 | "source-layer": "planet_osm_line", -1232 | "filter": [ -1233 | "in", -1234 | "highway", -1235 | "primary", -1236 | "secondary", -1237 | "tertiary", -1238 | "motorway", -1239 | "trunk" -1240 | ], -1241 | "minzoom": 13, -1242 | "layout": { -1243 | "text-field": [ -1244 | "coalesce", -1245 | [ -1246 | "get", -1247 | "name:ar" -1248 | ], -1249 | [ -1250 | "get", -1251 | "name" -1252 | ], -1253 | "" -1254 | ], -1255 | "text-font": [ -1256 | "Noto Sans Regular" -1257 | ], -1258 | "text-size": [ -1259 | "interpolate", -1260 | [ -1261 | "linear" -1262 | ], -1263 | [ -1264 | "zoom" -1265 | ], -1266 | 13, -1267 | 11, -1268 | 16, -1269 | 14 -1270 | ], -1271 | "symbol-placement": "line", -1272 | "text-letter-spacing": 0.05, -1273 | "text-padding": 5, -1274 | "text-allow-overlap": false -1275 | }, -1276 | "paint": { -1277 | "text-color": "#2D3748", -1278 | "text-halo-color": "rgba(255,255,255,0.9)", -1279 | "text-halo-width": 2 -1280 | } -1281 | }, -1282 | { -1283 | "id": "poi-hospital", -1284 | "type": "symbol", -1285 | "source": "local-osm-points", -1286 | "source-layer": "planet_osm_point", -1287 | "minzoom": 13, -1288 | "filter": [ -1289 | "==", -1290 | "amenity", -1291 | "hospital" -1292 | ], -1293 | "layout": { -1294 | "icon-image": "hospital", -1295 | "icon-size": 1, -1296 | "text-field": [ -1297 | "coalesce", -1298 | [ -1299 | "get", -1300 | "name:ar" -1301 | ], -1302 | [ -1303 | "get", -1304 | "name" -1305 | ], -1306 | "" -1307 | ], -1308 | "text-font": [ -1309 | "Noto Sans Regular" -1310 | ], -1311 | "text-size": 11, -1312 | "text-offset": [ -1313 | 0, -1314 | 1.2 -1315 | ], -1316 | "text-anchor": "top", -1317 | "text-allow-overlap": false -1318 | }, -1319 | "paint": { -1320 | "text-color": "#C0392B", -1321 | "text-halo-color": "white", -1322 | "text-halo-width": 2 -1323 | } -1324 | }, -1325 | { -1326 | "id": "poi-pharmacy", -1327 | "type": "symbol", -1328 | "source": "local-osm-points", -1329 | "source-layer": "planet_osm_point", -1330 | "minzoom": 15, -1331 | "filter": [ -1332 | "==", -1333 | "amenity", -1334 | "pharmacy" -1335 | ], -1336 | "layout": { -1337 | "icon-image": "pharmacy", -1338 | "icon-size": 0.8, -1339 | "text-field": [ -1340 | "coalesce", -1341 | [ -1342 | "get", -1343 | "name:ar" -1344 | ], -1345 | [ -1346 | "get", -1347 | "name" -1348 | ], -1349 | "" -1350 | ], -1351 | "text-font": [ -1352 | "Noto Sans Regular" -1353 | ], -1354 | "text-size": 10, -1355 | "text-offset": [ -1356 | 0, -1357 | 1.2 -1358 | ], -1359 | "text-anchor": "top" -1360 | }, -1361 | "paint": { -1362 | "text-color": "#1A7A3C", -1363 | "text-halo-color": "white", -1364 | "text-halo-width": 1.5 -1365 | } -1366 | }, -1367 | { -1368 | "id": "poi-place-of-worship", -1369 | "type": "symbol", -1370 | "source": "local-osm-points", -1371 | "source-layer": "planet_osm_point", -1372 | "minzoom": 14, -1373 | "filter": [ -1374 | "==", -1375 | "amenity", -1376 | "place_of_worship" -1377 | ], -1378 | "layout": { -1379 | "icon-image": "tourist", -1380 | "icon-size": 0.8, -1381 | "text-field": [ -1382 | "coalesce", -1383 | [ -1384 | "get", -1385 | "name:ar" -1386 | ], -1387 | [ -1388 | "get", -1389 | "name" -1390 | ], -1391 | "" -1392 | ], -1393 | "text-font": [ -1394 | "Noto Sans Regular" -1395 | ], -1396 | "text-size": 11, -1397 | "text-offset": [ -1398 | 0, -1399 | 1.2 -1400 | ], -1401 | "text-anchor": "top" -1402 | }, -1403 | "paint": { -1404 | "text-color": "#1A6B3A", -1405 | "text-halo-color": "white", -1406 | "text-halo-width": 2 -1407 | } -1408 | }, -1409 | { -1410 | "id": "poi-restaurant-cafe", -1411 | "type": "symbol", -1412 | "source": "local-osm-points", -1413 | "source-layer": "planet_osm_point", -1414 | "minzoom": 16, -1415 | "filter": [ -1416 | "in", -1417 | "amenity", -1418 | "restaurant", -1419 | "cafe", -1420 | "fast_food" -1421 | ], -1422 | "layout": { -1423 | "icon-image": [ -1424 | "match", -1425 | [ -1426 | "get", -1427 | "amenity" -1428 | ], -1429 | "cafe", -1430 | "cafe", -1431 | "restaurant" -1432 | ], -1433 | "icon-size": 0.8, -1434 | "text-field": [ -1435 | "coalesce", -1436 | [ -1437 | "get", -1438 | "name:ar" -1439 | ], -1440 | [ -1441 | "get", -1442 | "name" -1443 | ], -1444 | "" -1445 | ], -1446 | "text-font": [ -1447 | "Noto Sans Regular" -1448 | ], -1449 | "text-size": 10, -1450 | "text-offset": [ -1451 | 0, -1452 | 1.2 -1453 | ], -1454 | "text-anchor": "top" -1455 | }, -1456 | "paint": { -1457 | "text-color": "#3D4A5C", -1458 | "text-halo-color": "white", -1459 | "text-halo-width": 1.5 -1460 | } -1461 | }, -1462 | { -1463 | "id": "poi-school", -1464 | "type": "symbol", -1465 | "source": "local-osm-points", -1466 | "source-layer": "planet_osm_point", -1467 | "minzoom": 14, -1468 | "filter": [ -1469 | "in", -1470 | "amenity", -1471 | "school", -1472 | "university", -1473 | "college" -1474 | ], -1475 | "layout": { -1476 | "icon-image": "college", -1477 | "icon-size": 0.8, -1478 | "text-field": [ -1479 | "coalesce", -1480 | [ -1481 | "get", -1482 | "name:ar" -1483 | ], -1484 | [ -1485 | "get", -1486 | "name" -1487 | ], -1488 | "" -1489 | ], -1490 | "text-font": [ -1491 | "Noto Sans Regular" -1492 | ], -1493 | "text-size": 11, -1494 | "text-offset": [ -1495 | 0, -1496 | 1.2 -1497 | ], -1498 | "text-anchor": "top" -1499 | }, -1500 | "paint": { -1501 | "text-color": "#5A4A8A", -1502 | "text-halo-color": "white", -1503 | "text-halo-width": 2 -1504 | } -1505 | }, -1506 | { -1507 | "id": "poi-transit-station", -1508 | "type": "symbol", -1509 | "source": "local-osm-points", -1510 | "source-layer": "planet_osm_point", -1511 | "minzoom": 12, -1512 | "filter": [ -1513 | "any", -1514 | [ -1515 | "==", -1516 | "railway", -1517 | "station" -1518 | ], -1519 | [ -1520 | "==", -1521 | "railway", -1522 | "halt" -1523 | ], -1524 | [ -1525 | "==", -1526 | "railway", -1527 | "tram_stop" -1528 | ], -1529 | [ -1530 | "==", -1531 | "station", -1532 | "subway" -1533 | ], -1534 | [ -1535 | "==", -1536 | "amenity", -1537 | "bus_station" -1538 | ] -1539 | ], -1540 | "layout": { -1541 | "icon-image": "rail", -1542 | "icon-size": 1, -1543 | "text-field": [ -1544 | "coalesce", -1545 | [ -1546 | "get", -1547 | "name:ar" -1548 | ], -1549 | [ -1550 | "get", -1551 | "name" -1552 | ], -1553 | "" -1554 | ], -1555 | "text-font": [ -1556 | "Noto Sans Regular" -1557 | ], -1558 | "text-size": 11, -1559 | "text-offset": [ -1560 | 0, -1561 | 1.4 -1562 | ], -1563 | "text-anchor": "top", -1564 | "text-allow-overlap": false -1565 | }, -1566 | "paint": { -1567 | "text-color": "#CC2233", -1568 | "text-halo-color": "rgba(255,255,255,0.95)", -1569 | "text-halo-width": 2 -1570 | } -1571 | }, -1572 | { -1573 | "id": "place-labels-area", -1574 | "type": "symbol", -1575 | "source": "local-osm-polygons", -1576 | "source-layer": "planet_osm_polygon", -1577 | "minzoom": 10, -1578 | "filter": [ -1579 | "has", -1580 | "name" -1581 | ], -1582 | "layout": { -1583 | "text-field": [ -1584 | "coalesce", -1585 | [ -1586 | "get", -1587 | "name:ar" -1588 | ], -1589 | [ -1590 | "get", -1591 | "name" -1592 | ], -1593 | "" -1594 | ], -1595 | "text-font": [ -1596 | "Noto Sans Regular" -1597 | ], -1598 | "text-size": [ -1599 | "interpolate", -1600 | [ -1601 | "linear" -1602 | ], -1603 | [ -1604 | "zoom" -1605 | ], -1606 | 10, -1607 | 10, -1608 | 14, -1609 | 13 -1610 | ], -1611 | "text-padding": 8, -1612 | "text-allow-overlap": false, -1613 | "text-ignore-placement": false -1614 | }, -1615 | "paint": { -1616 | "text-color": "#34495E", -1617 | "text-halo-color": "rgba(255,255,255,0.85)", -1618 | "text-halo-width": 2 -1619 | } -1620 | }, -1621 | { -1622 | "id": "place-labels-point", -1623 | "type": "symbol", -1624 | "source": "local-osm-points", -1625 | "source-layer": "planet_osm_point", -1626 | "minzoom": 10, -1627 | "filter": [ -1628 | "any", -1629 | [ -1630 | "in", -1631 | "place", -1632 | "city", -1633 | "town", -1634 | "village", -1635 | "suburb", -1636 | "neighbourhood", -1637 | "hamlet", -1638 | "locality", -1639 | "quarter" -1640 | ], -1641 | [ -1642 | "in", -1643 | "natural", -1644 | "peak", -1645 | "spring" -1646 | ] -1647 | ], -1648 | "layout": { -1649 | "text-field": [ -1650 | "coalesce", -1651 | [ -1652 | "get", -1653 | "name:ar" -1654 | ], -1655 | [ -1656 | "get", -1657 | "name" -1658 | ], -1659 | "" -1660 | ], -1661 | "text-font": [ -1662 | "Noto Sans Regular" -1663 | ], -1664 | "text-size": [ -1665 | "interpolate", -1666 | [ -1667 | "linear" -1668 | ], -1669 | [ -1670 | "zoom" -1671 | ], -1672 | 10, -1673 | [ -1674 | "match", -1675 | [ -1676 | "get", -1677 | "place" -1678 | ], -1679 | "city", -1680 | 16, -1681 | "town", -1682 | 14, -1683 | 11 -1684 | ], -1685 | 14, -1686 | [ -1687 | "match", -1688 | [ -1689 | "get", -1690 | "place" -1691 | ], -1692 | "city", -1693 | 20, -1694 | "town", -1695 | 16, -1696 | 13 -1697 | ], -1698 | 17, -1699 | 14 -1700 | ], -1701 | "text-letter-spacing": [ -1702 | "match", -1703 | [ -1704 | "get", -1705 | "place" -1706 | ], -1707 | "city", -1708 | 0.08, -1709 | "town", -1710 | 0.05, -1711 | 0.02 -1712 | ], -1713 | "text-anchor": "center", -1714 | "text-padding": 10, -1715 | "text-allow-overlap": false -1716 | }, -1717 | "paint": { -1718 | "text-color": [ -1719 | "match", -1720 | [ -1721 | "get", -1722 | "place" -1723 | ], -1724 | "city", -1725 | "#1A2740", -1726 | "town", -1727 | "#2C3E50", -1728 | "village", -1729 | "#3D4F62", -1730 | "suburb", -1731 | "#4A5568", -1732 | "neighbourhood", -1733 | "#556677", -1734 | "#607080" -1735 | ], -1736 | "text-halo-color": "rgba(255,255,255,0.92)", -1737 | "text-halo-width": [ -1738 | "match", -1739 | [ -1740 | "get", -1741 | "place" -1742 | ], -1743 | "city", -1744 | 3, -1745 | "town", -1746 | 2.5, -1747 | 2 -1748 | ] -1749 | } -1750 | }, -1751 | { -1752 | "id": "places-egypt-labels", -1753 | "type": "symbol", -1754 | "source": "places_egypt", -1755 | "source-layer": "places_egypt", -1756 | "minzoom": 12, -1757 | "layout": { -1758 | "text-field": [ -1759 | "coalesce", -1760 | [ -1761 | "get", -1762 | "name_ar" -1763 | ], -1764 | [ -1765 | "get", -1766 | "name" -1767 | ], -1768 | "" -1769 | ], -1770 | "text-font": [ -1771 | "Noto Sans Bold" -1772 | ], -1773 | "text-size": [ -1774 | "interpolate", -1775 | [ -1776 | "linear" -1777 | ], -1778 | [ -1779 | "zoom" -1780 | ], -1781 | 12, -1782 | 9, -1783 | 16, -1784 | 13 -1785 | ], -1786 | "text-offset": [ -1787 | 0, -1788 | 1.5 -1789 | ], -1790 | "text-anchor": "top", -1791 | "text-padding": 8, -1792 | "text-allow-overlap": false -1793 | }, -1794 | "paint": { -1795 | "text-color": "#2D3748", -1796 | "text-halo-color": "rgba(255, 255, 255, 0.9)", -1797 | "text-halo-width": 2 -1798 | } -1799 | } -1800 | ] -1801 | } - - ------------------------------------------------------------- -[3] اسم الملف: add-syria.sh -المسار: ./add-syria.sh ------------------------------------------------------------- -0001 | #!/bin/bash -0002 | set -e -0003 | -0004 | DATA_DIR="/home/hamzadoctor/app/infrastructure/osm-data" -0005 | -0006 | echo "Downloading Syria map data..." -0007 | curl -L -o "$DATA_DIR/syria-latest.osm.pbf" https://download.geofabrik.de/asia/syria-latest.osm.pbf -0008 | -0009 | echo "Merging Syria and Jordan..." -0010 | # Backup original Jordan if not already backed up -0011 | if [ ! -f "$DATA_DIR/jordan-latest.orig.osm.pbf" ]; then -0012 | cp "$DATA_DIR/jordan-latest.osm.pbf" "$DATA_DIR/jordan-latest.orig.osm.pbf" -0013 | fi -0014 | -0015 | # Use --overwrite flag and ensure .pbf extension is at the end -0016 | osmium merge "$DATA_DIR/jordan-latest.orig.osm.pbf" "$DATA_DIR/syria-latest.osm.pbf" -o "$DATA_DIR/levant-latest.osm.pbf" --overwrite -0017 | -0018 | echo "Replacing data file for import..." -0019 | mv "$DATA_DIR/levant-latest.osm.pbf" "$DATA_DIR/jordan-latest.osm.pbf" -0020 | -0021 | echo "Re-importing to database (this may take a few minutes)..." -0022 | cd /home/hamzadoctor/app -0023 | docker compose run --rm osm-import -0024 | -0025 | echo "Restarting services..." -0026 | docker compose restart martin api -0027 | -0028 | echo "✅ Success! Jordan and Syria are now merged and imported." - - ------------------------------------------------------------- -[4] اسم الملف: .env -المسار: ./.env ------------------------------------------------------------- -0001 | # Jordan Map Platform - Environment Variables -0002 | # المتغيرات البيئية لمنصة خرائط الأردن -0003 | -0004 | # Database -0005 | POSTGRES_USER=mapuser -0006 | POSTGRES_PASSWORD=mappass -0007 | POSTGRES_DB=mapdb -0008 | DB_HOST=db -0009 | DB_PORT=5432 -0010 | -0011 | # Redis -0012 | REDIS_HOST=redis -0013 | REDIS_PORT=6379 -0014 | -0015 | # GraphHopper (Routing) -0016 | GRAPH_HOPPER_URL=http://routing:8080 -0017 | -0018 | # Map Server -0019 | TILE_SERVER_URL=http://tileserver:8080 -0020 | -0021 | # API -0022 | API_PORT=3200 -0023 | WEB_PORT=3201 -0024 | NODE_ENV=development -0025 | -0026 | # External Location Server Integration (Every 10 days) -0027 | # إعدادات الاتصال بسيرفر المواقع الخارجي -0028 | LOCATION_SERVER_URL=https://location.intaleq.xyz -0029 | LOCATION_SERVER_API_KEY=intaleq_secure_key_2026_jy@kjhk -0030 | MAP_API_KEY=zP9vL5mK2nQ8xR7jT4wS1yB6hG3fV0cX -0031 | -0032 | # Telegram Notifications -0033 | TELEGRAM_BOT_TOKEN=7618792580:AAE6YAdrgUdcuUu9g8kXveCb-hiO3ECOd1g -0034 | TELEGRAM_CHAT_ID=1766663126 - - ------------------------------------------------------------- -[5] اسم الملف: sync_to_server.sh -المسار: ./sync_to_server.sh ------------------------------------------------------------- -0001 | #!/bin/bash -0002 | -0003 | # Configuration -0004 | SERVER_IP="188.68.36.205" -0005 | SERVER_USER="hamzadoctor" -0006 | REMOTE_PATH="/home/hamzadoctor/app" -0007 | KEY_PATH="/Users/hamzaaleghwairyeen/.ssh/doctory-key" -0008 | -0009 | echo "🚀 Starting sync to server: $SERVER_IP..." -0010 | -0011 | # Verify if the key exists -0012 | if [ ! -f "$KEY_PATH" ]; then -0013 | echo "⚠️ Warning: Identity file $KEY_PATH not found locally." -0014 | echo "Attempting sync using default SSH configuration..." -0015 | KEY_FLAG="" -0016 | else -0017 | KEY_FLAG="-i $KEY_PATH" -0018 | fi -0019 | -0020 | # Sync files using rsync (surgical sync) -0021 | rsync -avz --progress -e "ssh -o StrictHostKeyChecking=no" $KEY_FLAG \ -0022 | --exclude 'infrastructure/osm-data' \ -0023 | --exclude 'osm-data' \ -0024 | --exclude 'venv' \ -0025 | --exclude '.git' \ -0026 | --exclude 'node_modules' \ -0027 | --exclude '.DS_Store' \ -0028 | .env \ -0029 | docker-compose.yml \ -0030 | docker-compose.map2.yml \ -0031 | setup_map2.sh \ -0032 | apps \ -0033 | packages \ -0034 | infrastructure \ -0035 | $SERVER_USER@$SERVER_IP:$REMOTE_PATH/ -0036 | -0037 | if [ $? -eq 0 ]; then -0038 | echo "✅ Sync successful!" -0039 | echo "------------------------------------------------" -0040 | echo "Now run the following on your SERVER terminal:" -0041 | echo "cd $REMOTE_PATH" -0042 | echo "docker-compose up -d --build api" -0043 | echo "------------------------------------------------" -0044 | else -0045 | echo "❌ Sync failed. Please check your SSH connection or manually update the files." -0046 | fi - - ------------------------------------------------------------- -[6] اسم الملف: import_syria_csv.sh -المسار: ./import_syria_csv.sh ------------------------------------------------------------- -0001 | #!/bin/bash -0002 | set -e -0003 | -0004 | # Configuration -0005 | CONTAINER_NAME="map-db" -0006 | DB_USER="postgres" -0007 | DB_NAME="map_saas" -0008 | CSV_FILE="infrastructure/docker/postgis/data_clean_syria.csv" -0009 | SQL_SCHEMA="infrastructure/docker/postgis/create_syria_table.sql" -0010 | -0011 | # 1. Ensure the table exists -0012 | echo "Setting up Syria table..." -0013 | docker exec -i $CONTAINER_NAME psql -U $DB_USER -d $DB_NAME < $SQL_SCHEMA -0014 | -0015 | # 2. Upload CSV to container for fast bulk loading -0016 | echo "Copying CSV to database container..." -0017 | docker cp $CSV_FILE $CONTAINER_NAME:/tmp/data_clean_syria.csv -0018 | -0019 | # 3. Import data using a temporary table to map columns correctly -0020 | echo "Importing data into PostGIS..." -0021 | docker exec -i $CONTAINER_NAME psql -U $DB_USER -d $DB_NAME < neighbourhood -0039 | INSERT INTO places_syria (name, neighbourhood, latitude, longitude, created_at) -0040 | SELECT name, search_query, latitude, longitude, -0041 | CASE WHEN scraped_at IS NOT NULL AND scraped_at <> '' THEN scraped_at::timestamp ELSE CURRENT_TIMESTAMP END -0042 | FROM temp_syria_import; -0043 | -0044 | -- Update PostGIS geometry column -0045 | UPDATE places_syria -0046 | SET location = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326) -0047 | WHERE location IS NULL AND latitude IS NOT NULL AND longitude IS NOT NULL; -0048 | -0049 | -- Clean up -0050 | DROP TABLE temp_syria_import; -0051 | EOF -0052 | -0053 | echo "✅ Import completed successfully!" -0054 | echo "Data sample from places_syria:" -0055 | docker exec -i $CONTAINER_NAME psql -U $DB_USER -d $DB_NAME -c "SELECT name, neighbourhood, latitude, longitude FROM places_syria LIMIT 5;" - - ------------------------------------------------------------- -[7] اسم الملف: index.d.ts -المسار: ./scraper/venv/lib/python3.13/site-packages/playwright/driver/package/index.d.ts ------------------------------------------------------------- -0001 | /** -0002 | * Copyright (c) Microsoft Corporation. -0003 | * -0004 | * Licensed under the Apache License, Version 2.0 (the "License"); -0005 | * you may not use this file except in compliance with the License. -0006 | * You may obtain a copy of the License at -0007 | * -0008 | * http://www.apache.org/licenses/LICENSE-2.0 -0009 | * -0010 | * Unless required by applicable law or agreed to in writing, software -0011 | * distributed under the License is distributed on an "AS IS" BASIS, -0012 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -0013 | * See the License for the specific language governing permissions and -0014 | * limitations under the License. -0015 | */ -0016 | -0017 | export * from './types/types'; - - ------------------------------------------------------------- -[8] اسم الملف: types.d.ts -المسار: ./scraper/venv/lib/python3.13/site-packages/playwright/driver/package/types/types.d.ts ------------------------------------------------------------- -0001 | // This file is generated by /utils/generate_types/index.js -0002 | /** -0003 | * Copyright (c) Microsoft Corporation. -0004 | * -0005 | * Licensed under the Apache License, Version 2.0 (the "License"); -0006 | * you may not use this file except in compliance with the License. -0007 | * You may obtain a copy of the License at -0008 | * -0009 | * http://www.apache.org/licenses/LICENSE-2.0 -0010 | * -0011 | * Unless required by applicable law or agreed to in writing, software -0012 | * distributed under the License is distributed on an "AS IS" BASIS, -0013 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -0014 | * See the License for the specific language governing permissions and -0015 | * limitations under the License. -0016 | */ -0017 | import { ChildProcess } from 'child_process'; -0018 | import { EventEmitter } from 'events'; -0019 | import { Readable } from 'stream'; -0020 | import { ReadStream } from 'fs'; -0021 | import { Protocol } from './protocol'; -0022 | import { Serializable, EvaluationArgument, PageFunction, PageFunctionOn, SmartHandle, ElementHandleForTag, BindingSource } from './structs'; -0023 | -0024 | type PageWaitForSelectorOptionsNotHidden = PageWaitForSelectorOptions & { -0025 | state?: 'visible'|'attached'; -0026 | }; -0027 | type ElementHandleWaitForSelectorOptionsNotHidden = ElementHandleWaitForSelectorOptions & { -0028 | state?: 'visible'|'attached'; -0029 | }; -0030 | -0031 | /** -0032 | * Page provides methods to interact with a single tab in a [Browser](https://playwright.dev/docs/api/class-browser), -0033 | * or an [extension background page](https://developer.chrome.com/extensions/background_pages) in Chromium. One -0034 | * [Browser](https://playwright.dev/docs/api/class-browser) instance might have multiple -0035 | * [Page](https://playwright.dev/docs/api/class-page) instances. -0036 | * -0037 | * This example creates a page, navigates it to a URL, and then saves a screenshot: -0038 | * -0039 | * ```js -0040 | * const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'. -0041 | * -0042 | * (async () => { -0043 | * const browser = await webkit.launch(); -0044 | * const context = await browser.newContext(); -0045 | * const page = await context.newPage(); -0046 | * await page.goto('https://example.com'); -0047 | * await page.screenshot({ path: 'screenshot.png' }); -0048 | * await browser.close(); -0049 | * })(); -0050 | * ``` -0051 | * -0052 | * The Page class emits various events (described below) which can be handled using any of Node's native -0053 | * [`EventEmitter`](https://nodejs.org/api/events.html#events_class_eventemitter) methods, such as `on`, `once` or -0054 | * `removeListener`. -0055 | * -0056 | * This example logs a message for a single page `load` event: -0057 | * -0058 | * ```js -0059 | * page.once('load', () => console.log('Page loaded!')); -0060 | * ``` -0061 | * -0062 | * To unsubscribe from events use the `removeListener` method: -0063 | * -0064 | * ```js -0065 | * function logRequest(interceptedRequest) { -0066 | * console.log('A request was made:', interceptedRequest.url()); -0067 | * } -0068 | * page.on('request', logRequest); -0069 | * // Sometime later... -0070 | * page.removeListener('request', logRequest); -0071 | * ``` -0072 | * -0073 | */ -0074 | export interface Page { -0075 | /** -0076 | * Returns the value of the -0077 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression) invocation. -0078 | * -0079 | * If the function passed to the -0080 | * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) returns a [Promise], -0081 | * then [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) would wait for -0082 | * the promise to resolve and return its value. -0083 | * -0084 | * If the function passed to the -0085 | * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) returns a -0086 | * non-[Serializable] value, then -0087 | * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) resolves to -0088 | * `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`: -0089 | * `-0`, `NaN`, `Infinity`, `-Infinity`. -0090 | * -0091 | * **Usage** -0092 | * -0093 | * Passing argument to [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression): -0094 | * -0095 | * ```js -0096 | * const result = await page.evaluate(([x, y]) => { -0097 | * return Promise.resolve(x * y); -0098 | * }, [7, 8]); -0099 | * console.log(result); // prints "56" -0100 | * ``` -0101 | * -0102 | * A string can also be passed in instead of a function: -0103 | * -0104 | * ```js -0105 | * console.log(await page.evaluate('1 + 2')); // prints "3" -0106 | * const x = 10; -0107 | * console.log(await page.evaluate(`1 + ${x}`)); // prints "11" -0108 | * ``` -0109 | * -0110 | * [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) instances can be passed as an argument to the -0111 | * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate): -0112 | * -0113 | * ```js -0114 | * const bodyHandle = await page.evaluate('document.body'); -0115 | * const html = await page.evaluate(([body, suffix]) => -0116 | * body.innerHTML + suffix, [bodyHandle, 'hello'] -0117 | * ); -0118 | * await bodyHandle.dispose(); -0119 | * ``` -0120 | * -0121 | * @param pageFunction Function to be evaluated in the page context. -0122 | * @param arg Optional argument to pass to -0123 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression). -0124 | */ -0125 | evaluate(pageFunction: PageFunction, arg: Arg): Promise; -0126 | /** -0127 | * Returns the value of the -0128 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression) invocation. -0129 | * -0130 | * If the function passed to the -0131 | * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) returns a [Promise], -0132 | * then [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) would wait for -0133 | * the promise to resolve and return its value. -0134 | * -0135 | * If the function passed to the -0136 | * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) returns a -0137 | * non-[Serializable] value, then -0138 | * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) resolves to -0139 | * `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`: -0140 | * `-0`, `NaN`, `Infinity`, `-Infinity`. -0141 | * -0142 | * **Usage** -0143 | * -0144 | * Passing argument to [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression): -0145 | * -0146 | * ```js -0147 | * const result = await page.evaluate(([x, y]) => { -0148 | * return Promise.resolve(x * y); -0149 | * }, [7, 8]); -0150 | * console.log(result); // prints "56" -0151 | * ``` -0152 | * -0153 | * A string can also be passed in instead of a function: -0154 | * -0155 | * ```js -0156 | * console.log(await page.evaluate('1 + 2')); // prints "3" -0157 | * const x = 10; -0158 | * console.log(await page.evaluate(`1 + ${x}`)); // prints "11" -0159 | * ``` -0160 | * -0161 | * [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) instances can be passed as an argument to the -0162 | * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate): -0163 | * -0164 | * ```js -0165 | * const bodyHandle = await page.evaluate('document.body'); -0166 | * const html = await page.evaluate(([body, suffix]) => -0167 | * body.innerHTML + suffix, [bodyHandle, 'hello'] -0168 | * ); -0169 | * await bodyHandle.dispose(); -0170 | * ``` -0171 | * -0172 | * @param pageFunction Function to be evaluated in the page context. -0173 | * @param arg Optional argument to pass to -0174 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression). -0175 | */ -0176 | evaluate(pageFunction: PageFunction, arg?: any): Promise; -0177 | -0178 | /** -0179 | * Returns the value of the -0180 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-handle-option-expression) invocation as a -0181 | * [JSHandle](https://playwright.dev/docs/api/class-jshandle). -0182 | * -0183 | * The only difference between -0184 | * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) and -0185 | * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) is that -0186 | * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) returns -0187 | * [JSHandle](https://playwright.dev/docs/api/class-jshandle). -0188 | * -0189 | * If the function passed to the -0190 | * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) returns -0191 | * a [Promise], then -0192 | * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) would -0193 | * wait for the promise to resolve and return its value. -0194 | * -0195 | * **Usage** -0196 | * -0197 | * ```js -0198 | * // Handle for the window object. -0199 | * const aWindowHandle = await page.evaluateHandle(() => Promise.resolve(window)); -0200 | * ``` -0201 | * -0202 | * A string can also be passed in instead of a function: -0203 | * -0204 | * ```js -0205 | * const aHandle = await page.evaluateHandle('document'); // Handle for the 'document' -0206 | * ``` -0207 | * -0208 | * [JSHandle](https://playwright.dev/docs/api/class-jshandle) instances can be passed as an argument to the -0209 | * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle): -0210 | * -0211 | * ```js -0212 | * const aHandle = await page.evaluateHandle(() => document.body); -0213 | * const resultHandle = await page.evaluateHandle(body => body.innerHTML, aHandle); -0214 | * console.log(await resultHandle.jsonValue()); -0215 | * await resultHandle.dispose(); -0216 | * ``` -0217 | * -0218 | * @param pageFunction Function to be evaluated in the page context. -0219 | * @param arg Optional argument to pass to -0220 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-handle-option-expression). -0221 | */ -0222 | evaluateHandle(pageFunction: PageFunction, arg: Arg): Promise>; -0223 | /** -0224 | * Returns the value of the -0225 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-handle-option-expression) invocation as a -0226 | * [JSHandle](https://playwright.dev/docs/api/class-jshandle). -0227 | * -0228 | * The only difference between -0229 | * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) and -0230 | * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) is that -0231 | * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) returns -0232 | * [JSHandle](https://playwright.dev/docs/api/class-jshandle). -0233 | * -0234 | * If the function passed to the -0235 | * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) returns -0236 | * a [Promise], then -0237 | * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) would -0238 | * wait for the promise to resolve and return its value. -0239 | * -0240 | * **Usage** -0241 | * -0242 | * ```js -0243 | * // Handle for the window object. -0244 | * const aWindowHandle = await page.evaluateHandle(() => Promise.resolve(window)); -0245 | * ``` -0246 | * -0247 | * A string can also be passed in instead of a function: -0248 | * -0249 | * ```js -0250 | * const aHandle = await page.evaluateHandle('document'); // Handle for the 'document' -0251 | * ``` -0252 | * -0253 | * [JSHandle](https://playwright.dev/docs/api/class-jshandle) instances can be passed as an argument to the -0254 | * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle): -0255 | * -0256 | * ```js -0257 | * const aHandle = await page.evaluateHandle(() => document.body); -0258 | * const resultHandle = await page.evaluateHandle(body => body.innerHTML, aHandle); -0259 | * console.log(await resultHandle.jsonValue()); -0260 | * await resultHandle.dispose(); -0261 | * ``` -0262 | * -0263 | * @param pageFunction Function to be evaluated in the page context. -0264 | * @param arg Optional argument to pass to -0265 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-handle-option-expression). -0266 | */ -0267 | evaluateHandle(pageFunction: PageFunction, arg?: any): Promise>; -0268 | -0269 | /** -0270 | * Adds a script which would be evaluated in one of the following scenarios: -0271 | * - Whenever the page is navigated. -0272 | * - Whenever the child frame is attached or navigated. In this case, the script is evaluated in the context of the -0273 | * newly attached frame. -0274 | * -0275 | * The script is evaluated after the document was created but before any of its scripts were run. This is useful to -0276 | * amend the JavaScript environment, e.g. to seed `Math.random`. -0277 | * -0278 | * **Usage** -0279 | * -0280 | * An example of overriding `Math.random` before the page loads: -0281 | * -0282 | * ```js -0283 | * // preload.js -0284 | * Math.random = () => 42; -0285 | * ``` -0286 | * -0287 | * ```js -0288 | * // In your playwright script, assuming the preload.js file is in same directory -0289 | * await page.addInitScript({ path: './preload.js' }); -0290 | * ``` -0291 | * -0292 | * ```js -0293 | * await page.addInitScript(mock => { -0294 | * window.mock = mock; -0295 | * }, mock); -0296 | * ``` -0297 | * -0298 | * **NOTE** The order of evaluation of multiple scripts installed via -0299 | * [browserContext.addInitScript(script[, arg])](https://playwright.dev/docs/api/class-browsercontext#browser-context-add-init-script) -0300 | * and [page.addInitScript(script[, arg])](https://playwright.dev/docs/api/class-page#page-add-init-script) is not -0301 | * defined. -0302 | * -0303 | * @param script Script to be evaluated in the page. -0304 | * @param arg Optional argument to pass to -0305 | * [`script`](https://playwright.dev/docs/api/class-page#page-add-init-script-option-script) (only supported when -0306 | * passing a function). -0307 | */ -0308 | addInitScript(script: PageFunction | { path?: string, content?: string }, arg?: Arg): Promise; -0309 | -0310 | /** -0311 | * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator) -0312 | * instead. Read more about [locators](https://playwright.dev/docs/locators). -0313 | * -0314 | * The method finds an element matching the specified selector within the page. If no elements match the selector, the -0315 | * return value resolves to `null`. To wait for an element on the page, use -0316 | * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for). -0317 | * @param selector A selector to query for. -0318 | * @param options -0319 | */ -0320 | $(selector: K, options?: { strict: boolean }): Promise | null>; -0321 | /** -0322 | * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator) -0323 | * instead. Read more about [locators](https://playwright.dev/docs/locators). -0324 | * -0325 | * The method finds an element matching the specified selector within the page. If no elements match the selector, the -0326 | * return value resolves to `null`. To wait for an element on the page, use -0327 | * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for). -0328 | * @param selector A selector to query for. -0329 | * @param options -0330 | */ -0331 | $(selector: string, options?: { strict: boolean }): Promise | null>; -0332 | -0333 | /** -0334 | * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator) -0335 | * instead. Read more about [locators](https://playwright.dev/docs/locators). -0336 | * -0337 | * The method finds all elements matching the specified selector within the page. If no elements match the selector, -0338 | * the return value resolves to `[]`. -0339 | * @param selector A selector to query for. -0340 | */ -0341 | $$(selector: K): Promise[]>; -0342 | /** -0343 | * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator) -0344 | * instead. Read more about [locators](https://playwright.dev/docs/locators). -0345 | * -0346 | * The method finds all elements matching the specified selector within the page. If no elements match the selector, -0347 | * the return value resolves to `[]`. -0348 | * @param selector A selector to query for. -0349 | */ -0350 | $$(selector: string): Promise[]>; -0351 | -0352 | /** -0353 | * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests. -0354 | * Use -0355 | * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate), -0356 | * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead. -0357 | * -0358 | * The method finds an element matching the specified selector within the page and passes it as a first argument to -0359 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). If no -0360 | * elements match the selector, the method throws an error. Returns the value of -0361 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). -0362 | * -0363 | * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression) returns a -0364 | * [Promise], then -0365 | * [page.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-eval-on-selector) -0366 | * would wait for the promise to resolve and return its value. -0367 | * -0368 | * **Usage** -0369 | * -0370 | * ```js -0371 | * const searchValue = await page.$eval('#search', el => el.value); -0372 | * const preloadHref = await page.$eval('link[rel=preload]', el => el.href); -0373 | * const html = await page.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello'); -0374 | * // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el: -0375 | * const preloadHrefTS = await page.$eval('link[rel=preload]', (el: HTMLLinkElement) => el.href); -0376 | * ``` -0377 | * -0378 | * @param selector A selector to query for. -0379 | * @param pageFunction Function to be evaluated in the page context. -0380 | * @param arg Optional argument to pass to -0381 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). -0382 | * @param options -0383 | */ -0384 | $eval(selector: K, pageFunction: PageFunctionOn, arg: Arg): Promise; -0385 | /** -0386 | * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests. -0387 | * Use -0388 | * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate), -0389 | * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead. -0390 | * -0391 | * The method finds an element matching the specified selector within the page and passes it as a first argument to -0392 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). If no -0393 | * elements match the selector, the method throws an error. Returns the value of -0394 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). -0395 | * -0396 | * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression) returns a -0397 | * [Promise], then -0398 | * [page.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-eval-on-selector) -0399 | * would wait for the promise to resolve and return its value. -0400 | * -0401 | * **Usage** -0402 | * -0403 | * ```js -0404 | * const searchValue = await page.$eval('#search', el => el.value); -0405 | * const preloadHref = await page.$eval('link[rel=preload]', el => el.href); -0406 | * const html = await page.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello'); -0407 | * // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el: -0408 | * const preloadHrefTS = await page.$eval('link[rel=preload]', (el: HTMLLinkElement) => el.href); -0409 | * ``` -0410 | * -0411 | * @param selector A selector to query for. -0412 | * @param pageFunction Function to be evaluated in the page context. -0413 | * @param arg Optional argument to pass to -0414 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). -0415 | * @param options -0416 | */ -0417 | $eval(selector: string, pageFunction: PageFunctionOn, arg: Arg): Promise; -0418 | /** -0419 | * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests. -0420 | * Use -0421 | * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate), -0422 | * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead. -0423 | * -0424 | * The method finds an element matching the specified selector within the page and passes it as a first argument to -0425 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). If no -0426 | * elements match the selector, the method throws an error. Returns the value of -0427 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). -0428 | * -0429 | * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression) returns a -0430 | * [Promise], then -0431 | * [page.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-eval-on-selector) -0432 | * would wait for the promise to resolve and return its value. -0433 | * -0434 | * **Usage** -0435 | * -0436 | * ```js -0437 | * const searchValue = await page.$eval('#search', el => el.value); -0438 | * const preloadHref = await page.$eval('link[rel=preload]', el => el.href); -0439 | * const html = await page.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello'); -0440 | * // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el: -0441 | * const preloadHrefTS = await page.$eval('link[rel=preload]', (el: HTMLLinkElement) => el.href); -0442 | * ``` -0443 | * -0444 | * @param selector A selector to query for. -0445 | * @param pageFunction Function to be evaluated in the page context. -0446 | * @param arg Optional argument to pass to -0447 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). -0448 | * @param options -0449 | */ -0450 | $eval(selector: K, pageFunction: PageFunctionOn, arg?: any): Promise; -0451 | /** -0452 | * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests. -0453 | * Use -0454 | * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate), -0455 | * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead. -0456 | * -0457 | * The method finds an element matching the specified selector within the page and passes it as a first argument to -0458 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). If no -0459 | * elements match the selector, the method throws an error. Returns the value of -0460 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). -0461 | * -0462 | * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression) returns a -0463 | * [Promise], then -0464 | * [page.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-eval-on-selector) -0465 | * would wait for the promise to resolve and return its value. -0466 | * -0467 | * **Usage** -0468 | * -0469 | * ```js -0470 | * const searchValue = await page.$eval('#search', el => el.value); -0471 | * const preloadHref = await page.$eval('link[rel=preload]', el => el.href); -0472 | * const html = await page.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello'); -0473 | * // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el: -0474 | * const preloadHrefTS = await page.$eval('link[rel=preload]', (el: HTMLLinkElement) => el.href); -0475 | * ``` -0476 | * -0477 | * @param selector A selector to query for. -0478 | * @param pageFunction Function to be evaluated in the page context. -0479 | * @param arg Optional argument to pass to -0480 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). -0481 | * @param options -0482 | */ -0483 | $eval(selector: string, pageFunction: PageFunctionOn, arg?: any): Promise; -0484 | -0485 | /** -0486 | * **NOTE** In most cases, -0487 | * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all), -0488 | * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better -0489 | * job. -0490 | * -0491 | * The method finds all elements matching the specified selector within the page and passes an array of matched -0492 | * elements as a first argument to -0493 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). Returns -0494 | * the result of -0495 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) -0496 | * invocation. -0497 | * -0498 | * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) returns -0499 | * a [Promise], then -0500 | * [page.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all) -0501 | * would wait for the promise to resolve and return its value. -0502 | * -0503 | * **Usage** -0504 | * -0505 | * ```js -0506 | * const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10); -0507 | * ``` -0508 | * -0509 | * @param selector A selector to query for. -0510 | * @param pageFunction Function to be evaluated in the page context. -0511 | * @param arg Optional argument to pass to -0512 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). -0513 | */ -0514 | $$eval(selector: K, pageFunction: PageFunctionOn, arg: Arg): Promise; -0515 | /** -0516 | * **NOTE** In most cases, -0517 | * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all), -0518 | * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better -0519 | * job. -0520 | * -0521 | * The method finds all elements matching the specified selector within the page and passes an array of matched -0522 | * elements as a first argument to -0523 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). Returns -0524 | * the result of -0525 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) -0526 | * invocation. -0527 | * -0528 | * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) returns -0529 | * a [Promise], then -0530 | * [page.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all) -0531 | * would wait for the promise to resolve and return its value. -0532 | * -0533 | * **Usage** -0534 | * -0535 | * ```js -0536 | * const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10); -0537 | * ``` -0538 | * -0539 | * @param selector A selector to query for. -0540 | * @param pageFunction Function to be evaluated in the page context. -0541 | * @param arg Optional argument to pass to -0542 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). -0543 | */ -0544 | $$eval(selector: string, pageFunction: PageFunctionOn, arg: Arg): Promise; -0545 | /** -0546 | * **NOTE** In most cases, -0547 | * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all), -0548 | * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better -0549 | * job. -0550 | * -0551 | * The method finds all elements matching the specified selector within the page and passes an array of matched -0552 | * elements as a first argument to -0553 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). Returns -0554 | * the result of -0555 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) -0556 | * invocation. -0557 | * -0558 | * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) returns -0559 | * a [Promise], then -0560 | * [page.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all) -0561 | * would wait for the promise to resolve and return its value. -0562 | * -0563 | * **Usage** -0564 | * -0565 | * ```js -0566 | * const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10); -0567 | * ``` -0568 | * -0569 | * @param selector A selector to query for. -0570 | * @param pageFunction Function to be evaluated in the page context. -0571 | * @param arg Optional argument to pass to -0572 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). -0573 | */ -0574 | $$eval(selector: K, pageFunction: PageFunctionOn, arg?: any): Promise; -0575 | /** -0576 | * **NOTE** In most cases, -0577 | * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all), -0578 | * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better -0579 | * job. -0580 | * -0581 | * The method finds all elements matching the specified selector within the page and passes an array of matched -0582 | * elements as a first argument to -0583 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). Returns -0584 | * the result of -0585 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) -0586 | * invocation. -0587 | * -0588 | * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) returns -0589 | * a [Promise], then -0590 | * [page.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all) -0591 | * would wait for the promise to resolve and return its value. -0592 | * -0593 | * **Usage** -0594 | * -0595 | * ```js -0596 | * const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10); -0597 | * ``` -0598 | * -0599 | * @param selector A selector to query for. -0600 | * @param pageFunction Function to be evaluated in the page context. -0601 | * @param arg Optional argument to pass to -0602 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). -0603 | */ -0604 | $$eval(selector: string, pageFunction: PageFunctionOn, arg?: any): Promise; -0605 | -0606 | /** -0607 | * Returns when the -0608 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-expression) returns a -0609 | * truthy value. It resolves to a JSHandle of the truthy value. -0610 | * -0611 | * **Usage** -0612 | * -0613 | * The -0614 | * [page.waitForFunction(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-wait-for-function) -0615 | * can be used to observe viewport size change: -0616 | * -0617 | * ```js -0618 | * const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'. -0619 | * -0620 | * (async () => { -0621 | * const browser = await webkit.launch(); -0622 | * const page = await browser.newPage(); -0623 | * const watchDog = page.waitForFunction(() => window.innerWidth < 100); -0624 | * await page.setViewportSize({ width: 50, height: 50 }); -0625 | * await watchDog; -0626 | * await browser.close(); -0627 | * })(); -0628 | * ``` -0629 | * -0630 | * To pass an argument to the predicate of -0631 | * [page.waitForFunction(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-wait-for-function) -0632 | * function: -0633 | * -0634 | * ```js -0635 | * const selector = '.foo'; -0636 | * await page.waitForFunction(selector => !!document.querySelector(selector), selector); -0637 | * ``` -0638 | * -0639 | * @param pageFunction Function to be evaluated in the page context. -0640 | * @param arg Optional argument to pass to -0641 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-expression). -0642 | * @param options -0643 | */ -0644 | waitForFunction(pageFunction: PageFunction, arg: Arg, options?: PageWaitForFunctionOptions): Promise>; -0645 | /** -0646 | * Returns when the -0647 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-expression) returns a -0648 | * truthy value. It resolves to a JSHandle of the truthy value. -0649 | * -0650 | * **Usage** -0651 | * -0652 | * The -0653 | * [page.waitForFunction(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-wait-for-function) -0654 | * can be used to observe viewport size change: -0655 | * -0656 | * ```js -0657 | * const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'. -0658 | * -0659 | * (async () => { -0660 | * const browser = await webkit.launch(); -0661 | * const page = await browser.newPage(); -0662 | * const watchDog = page.waitForFunction(() => window.innerWidth < 100); -0663 | * await page.setViewportSize({ width: 50, height: 50 }); -0664 | * await watchDog; -0665 | * await browser.close(); -0666 | * })(); -0667 | * ``` -0668 | * -0669 | * To pass an argument to the predicate of -0670 | * [page.waitForFunction(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-wait-for-function) -0671 | * function: -0672 | * -0673 | * ```js -0674 | * const selector = '.foo'; -0675 | * await page.waitForFunction(selector => !!document.querySelector(selector), selector); -0676 | * ``` -0677 | * -0678 | * @param pageFunction Function to be evaluated in the page context. -0679 | * @param arg Optional argument to pass to -0680 | * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-expression). -0681 | * @param options -0682 | */ -0683 | waitForFunction(pageFunction: PageFunction, arg?: any, options?: PageWaitForFunctionOptions): Promise>; -0684 | -0685 | /** -0686 | * **NOTE** Use web assertions that assert visibility or a locator-based -0687 | * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more -0688 | * about [locators](https://playwright.dev/docs/locators). -0689 | * -0690 | * Returns when element specified by selector satisfies -0691 | * [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option. Returns `null` if -0692 | * waiting for `hidden` or `detached`. -0693 | * -0694 | * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using -0695 | * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions makes the code -0696 | * wait-for-selector-free. -0697 | * -0698 | * Wait for the [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) to -0699 | * satisfy [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option (either -0700 | * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method -0701 | * [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) already satisfies -0702 | * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the -0703 | * [`timeout`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-timeout) milliseconds, the -0704 | * function will throw. -0705 | * -0706 | * **Usage** -0707 | * -0708 | * This method works across navigations: -0709 | * -0710 | * ```js -0711 | * const { chromium } = require('playwright'); // Or 'firefox' or 'webkit'. -0712 | * -0713 | * (async () => { -0714 | * const browser = await chromium.launch(); -0715 | * const page = await browser.newPage(); -0716 | * for (const currentURL of ['https://google.com', 'https://bbc.com']) { -0717 | * await page.goto(currentURL); -0718 | * const element = await page.waitForSelector('img'); -0719 | * console.log('Loaded image: ' + await element.getAttribute('src')); -0720 | * } -0721 | * await browser.close(); -0722 | * })(); -0723 | * ``` -0724 | * -0725 | * @param selector A selector to query for. -0726 | * @param options -0727 | */ -0728 | waitForSelector(selector: K, options?: PageWaitForSelectorOptionsNotHidden): Promise>; -0729 | /** -0730 | * **NOTE** Use web assertions that assert visibility or a locator-based -0731 | * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more -0732 | * about [locators](https://playwright.dev/docs/locators). -0733 | * -0734 | * Returns when element specified by selector satisfies -0735 | * [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option. Returns `null` if -0736 | * waiting for `hidden` or `detached`. -0737 | * -0738 | * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using -0739 | * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions makes the code -0740 | * wait-for-selector-free. -0741 | * -0742 | * Wait for the [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) to -0743 | * satisfy [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option (either -0744 | * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method -0745 | * [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) already satisfies -0746 | * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the -0747 | * [`timeout`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-timeout) milliseconds, the -0748 | * function will throw. -0749 | * -0750 | * **Usage** -0751 | * -0752 | * This method works across navigations: -0753 | * -0754 | * ```js -0755 | * const { chromium } = require('playwright'); // Or 'firefox' or 'webkit'. -0756 | * -0757 | * (async () => { -0758 | * const browser = await chromium.launch(); -0759 | * const page = await browser.newPage(); -0760 | * for (const currentURL of ['https://google.com', 'https://bbc.com']) { -0761 | * await page.goto(currentURL); -0762 | * const element = await page.waitForSelector('img'); -0763 | * console.log('Loaded image: ' + await element.getAttribute('src')); -0764 | * } -0765 | * await browser.close(); -0766 | * })(); -0767 | * ``` -0768 | * -0769 | * @param selector A selector to query for. -0770 | * @param options -0771 | */ -0772 | waitForSelector(selector: string, options?: PageWaitForSelectorOptionsNotHidden): Promise>; -0773 | /** -0774 | * **NOTE** Use web assertions that assert visibility or a locator-based -0775 | * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more -0776 | * about [locators](https://playwright.dev/docs/locators). -0777 | * -0778 | * Returns when element specified by selector satisfies -0779 | * [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option. Returns `null` if -0780 | * waiting for `hidden` or `detached`. -0781 | * -0782 | * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using -0783 | * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions makes the code -0784 | * wait-for-selector-free. -0785 | * -0786 | * Wait for the [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) to -0787 | * satisfy [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option (either -0788 | * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method -0789 | * [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) already satisfies -0790 | * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the -0791 | * [`timeout`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-timeout) milliseconds, the -0792 | * function will throw. -0793 | * -0794 | * **Usage** -0795 | * -0796 | * This method works across navigations: -0797 | * -0798 | * ```js -0799 | * const { chromium } = require('playwright'); // Or 'firefox' or 'webkit'. -0800 | * -0801 | * (async () => { -0802 | * const browser = await chromium.launch(); -0803 | * const page = await browser.newPage(); -0804 | * for (const currentURL of ['https://google.com', 'https://bbc.com']) { -0805 | * await page.goto(currentURL); -0806 | * const element = await page.waitForSelector('img'); -0807 | * console.log('Loaded image: ' + await element.getAttribute('src')); -0808 | * } -0809 | * await browser.close(); -0810 | * })(); -0811 | * ``` -0812 | * -0813 | * @param selector A selector to query for. -0814 | * @param options -0815 | */ -0816 | waitForSelector(selector: K, options: PageWaitForSelectorOptions): Promise | null>; -0817 | /** -0818 | * **NOTE** Use web assertions that assert visibility or a locator-based -0819 | * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more -0820 | * about [locators](https://playwright.dev/docs/locators). -0821 | * -0822 | * Returns when element specified by selector satisfies -0823 | * [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option. Returns `null` if -0824 | * waiting for `hidden` or `detached`. -0825 | * -0826 | * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using -0827 | * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions makes the code -0828 | * wait-for-selector-free. -0829 | * -0830 | * Wait for the [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) to -0831 | * satisfy [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option (either -0832 | * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method -0833 | * [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) already satisfies -0834 | * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the -0835 | * [`timeout`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-timeout) milliseconds, the -0836 | * function will throw. -0837 | * -0838 | * **Usage** -0839 | * -0840 | * This method works across navigations: -0841 | * -0842 | * ```js -0843 | * const { chromium } = require('playwright'); // Or 'firefox' or 'webkit'. -0844 | * -0845 | * (async () => { -0846 | * const browser = await chromium.launch(); -0847 | * const page = await browser.newPage(); -0848 | * for (const currentURL of ['https://google.com', 'https://bbc.com']) { -0849 | * await page.goto(currentURL); -0850 | * const element = await page.waitForSelector('img'); -0851 | * console.log('Loaded image: ' + await element.getAttribute('src')); -0852 | * } -0853 | * await browser.close(); -0854 | * })(); -0855 | * ``` -0856 | * -0857 | * @param selector A selector to query for. -0858 | * @param options -0859 | */ -0860 | waitForSelector(selector: string, options: PageWaitForSelectorOptions): Promise>; -0861 | -0862 | /** -0863 | * The method adds a function called -0864 | * [`name`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-name) on the `window` object of -0865 | * every frame in this page. When called, the function executes -0866 | * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback) and returns a -0867 | * [Promise] which resolves to the return value of -0868 | * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback). If the -0869 | * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback) returns a [Promise], -0870 | * it will be awaited. -0871 | * -0872 | * The first argument of the -0873 | * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback) function contains -0874 | * information about the caller: `{ browserContext: BrowserContext, page: Page, frame: Frame }`. -0875 | * -0876 | * See -0877 | * [browserContext.exposeBinding(name, callback[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-binding) -0878 | * for the context-wide version. -0879 | * -0880 | * **NOTE** Functions installed via -0881 | * [page.exposeBinding(name, callback[, options])](https://playwright.dev/docs/api/class-page#page-expose-binding) -0882 | * survive navigations. -0883 | * -0884 | * **Usage** -0885 | * -0886 | * An example of exposing page URL to all frames in a page: -0887 | * -0888 | * ```js -0889 | * const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'. -0890 | * -0891 | * (async () => { -0892 | * const browser = await webkit.launch({ headless: false }); -0893 | * const context = await browser.newContext(); -0894 | * const page = await context.newPage(); -0895 | * await page.exposeBinding('pageURL', ({ page }) => page.url()); -0896 | * await page.setContent(` -0897 | * -0902 | * -0903 | *
-0904 | * `); -0905 | * await page.click('button'); -0906 | * })(); -0907 | * ``` -0908 | * -0909 | * @param name Name of the function on the window object. -0910 | * @param callback Callback function that will be called in the Playwright's context. -0911 | * @param options -0912 | */ -0913 | exposeBinding(name: string, playwrightBinding: (source: BindingSource, arg: JSHandle) => any, options: { handle: true }): Promise; -0914 | /** -0915 | * The method adds a function called -0916 | * [`name`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-name) on the `window` object of -0917 | * every frame in this page. When called, the function executes -0918 | * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback) and returns a -0919 | * [Promise] which resolves to the return value of -0920 | * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback). If the -0921 | * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback) returns a [Promise], -0922 | * it will be awaited. -0923 | * -0924 | * The first argument of the -0925 | * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback) function contains -0926 | * information about the caller: `{ browserContext: BrowserContext, page: Page, frame: Frame }`. -0927 | * -0928 | * See -0929 | * [browserContext.exposeBinding(name, callback[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-binding) -0930 | * for the context-wide version. -0931 | * -0932 | * **NOTE** Functions installed via -0933 | * [page.exposeBinding(name, callback[, options])](https://playwright.dev/docs/api/class-page#page-expose-binding) -0934 | * survive navigations. -0935 | * -0936 | * **Usage** -0937 | * -0938 | * An example of exposing page URL to all frames in a page: -0939 | * -0940 | * ```js -0941 | * const { webkit } = require('playwright'); // Or 'chromium' or 'firefox'. -0942 | * -0943 | * (async () => { -0944 | * const browser = await webkit.launch({ headless: false }); -0945 | * const context = await browser.newContext(); -0946 | * const page = await context.newPage(); -0947 | * await page.exposeBinding('pageURL', ({ page }) => page.url()); -0948 | * await page.setContent(` -0949 | * -0954 | * -0955 | *
-0956 | * `); -0957 | * await page.click('button'); -0958 | * })(); -0959 | * ``` -0960 | * -0961 | * @param name Name of the function on the window object. -0962 | * @param callback Callback function that will be called in the Playwright's context. -0963 | * @param options -0964 | */ -0965 | exposeBinding(name: string, playwrightBinding: (source: BindingSource, ...args: any[]) => any, options?: { handle?: boolean }): Promise; -0966 | -0967 | /** -0968 | * Removes all the listeners of the given type (or all registered listeners if no type given). Allows to wait for -0969 | * async listeners to complete or to ignore subsequent errors from these listeners. -0970 | * -0971 | * **Usage** -0972 | * -0973 | * ```js -0974 | * page.on('request', async request => { -0975 | * const response = await request.response(); -0976 | * const body = await response.body(); -0977 | * console.log(body.byteLength); -0978 | * }); -0979 | * await page.goto('https://playwright.dev', { waitUntil: 'domcontentloaded' }); -0980 | * // Waits for all the reported 'request' events to resolve. -0981 | * await page.removeAllListeners('request', { behavior: 'wait' }); -0982 | * ``` -0983 | * -0984 | * @param type -0985 | * @param options -0986 | */ -0987 | removeAllListeners(type?: string): this; -0988 | /** -0989 | * Removes all the listeners of the given type (or all registered listeners if no type given). Allows to wait for -0990 | * async listeners to complete or to ignore subsequent errors from these listeners. -0991 | * -0992 | * **Usage** -0993 | * -0994 | * ```js -0995 | * page.on('request', async request => { -0996 | * const response = await request.response(); -0997 | * const body = await response.body(); -0998 | * console.log(body.byteLength); -0999 | * }); -1000 | * await page.goto('https://playwright.dev', { waitUntil: 'domcontentloaded' }); -1001 | * // Waits for all the reported 'request' events to resolve. -1002 | * await page.removeAllListeners('request', { behavior: 'wait' }); -1003 | * ``` -1004 | * -1005 | * @param type -1006 | * @param options -1007 | */ -1008 | removeAllListeners(type: string | undefined, options: { -1009 | /** -1010 | * Specifies whether to wait for already running listeners and what to do if they throw errors: -1011 | * - `'default'` - do not wait for current listener calls (if any) to finish, if the listener throws, it may result in unhandled error -1012 | * - `'wait'` - wait for current listener calls (if any) to finish -1013 | * - `'ignoreErrors'` - do not wait for current listener calls (if any) to finish, all errors thrown by the listeners after removal are silently caught -1014 | */ -1015 | behavior?: 'wait'|'ignoreErrors'|'default' -1016 | }): Promise; -1017 | /** -1018 | * Emitted when the page closes. -1019 | */ -1020 | on(event: 'close', listener: (page: Page) => any): this; -1021 | -1022 | /** -1023 | * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. -1024 | * -1025 | * The arguments passed into `console.log` are available on the -1026 | * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument. -1027 | * -1028 | * **Usage** -1029 | * -1030 | * ```js -1031 | * page.on('console', async msg => { -1032 | * const values = []; -1033 | * for (const arg of msg.args()) -1034 | * values.push(await arg.jsonValue()); -1035 | * console.log(...values); -1036 | * }); -1037 | * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' })); -1038 | * ``` -1039 | * -1040 | */ -1041 | on(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; -1042 | -1043 | /** -1044 | * Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page -1045 | * crashes, ongoing and subsequent operations will throw. -1046 | * -1047 | * The most common way to deal with crashes is to catch an exception: -1048 | * -1049 | * ```js -1050 | * try { -1051 | * // Crash might happen during a click. -1052 | * await page.click('button'); -1053 | * // Or while waiting for an event. -1054 | * await page.waitForEvent('popup'); -1055 | * } catch (e) { -1056 | * // When the page crashes, exception message contains 'crash'. -1057 | * } -1058 | * ``` -1059 | * -1060 | */ -1061 | on(event: 'crash', listener: (page: Page) => any): this; -1062 | -1063 | /** -1064 | * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** -1065 | * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or -1066 | * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page -1067 | * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the -1068 | * dialog, and actions like click will never finish. -1069 | * -1070 | * **Usage** -1071 | * -1072 | * ```js -1073 | * page.on('dialog', dialog => dialog.accept()); -1074 | * ``` -1075 | * -1076 | * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or -1077 | * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog) -1078 | * listeners are present, all dialogs are automatically dismissed. -1079 | * -1080 | */ -1081 | on(event: 'dialog', listener: (dialog: Dialog) => any): this; -1082 | -1083 | /** -1084 | * Emitted when the JavaScript -1085 | * [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched. -1086 | */ -1087 | on(event: 'domcontentloaded', listener: (page: Page) => any): this; -1088 | -1089 | /** -1090 | * Emitted when attachment download started. User can access basic file operations on downloaded content via the -1091 | * passed [Download](https://playwright.dev/docs/api/class-download) instance. -1092 | */ -1093 | on(event: 'download', listener: (download: Download) => any): this; -1094 | -1095 | /** -1096 | * Emitted when a file chooser is supposed to appear, such as after clicking the ``. Playwright can -1097 | * respond to it via setting the input files using -1098 | * [fileChooser.setFiles(files[, options])](https://playwright.dev/docs/api/class-filechooser#file-chooser-set-files) -1099 | * that can be uploaded after that. -1100 | * -1101 | * ```js -1102 | * page.on('filechooser', async fileChooser => { -1103 | * await fileChooser.setFiles(path.join(__dirname, '/tmp/myfile.pdf')); -1104 | * }); -1105 | * ``` -1106 | * -1107 | */ -1108 | on(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; -1109 | -1110 | /** -1111 | * Emitted when a frame is attached. -1112 | */ -1113 | on(event: 'frameattached', listener: (frame: Frame) => any): this; -1114 | -1115 | /** -1116 | * Emitted when a frame is detached. -1117 | */ -1118 | on(event: 'framedetached', listener: (frame: Frame) => any): this; -1119 | -1120 | /** -1121 | * Emitted when a frame is navigated to a new url. -1122 | */ -1123 | on(event: 'framenavigated', listener: (frame: Frame) => any): this; -1124 | -1125 | /** -1126 | * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. -1127 | */ -1128 | on(event: 'load', listener: (page: Page) => any): this; -1129 | -1130 | /** -1131 | * Emitted when an uncaught exception happens within the page. -1132 | * -1133 | * ```js -1134 | * // Log all uncaught errors to the terminal -1135 | * page.on('pageerror', exception => { -1136 | * console.log(`Uncaught exception: "${exception}"`); -1137 | * }); -1138 | * -1139 | * // Navigate to a page with an exception. -1140 | * await page.goto('data:text/html,'); -1141 | * ``` -1142 | * -1143 | */ -1144 | on(event: 'pageerror', listener: (error: Error) => any): this; -1145 | -1146 | /** -1147 | * Emitted when the page opens a new tab or window. This event is emitted in addition to the -1148 | * [browserContext.on('page')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page), but -1149 | * only for popups relevant to this page. -1150 | * -1151 | * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a -1152 | * popup with `window.open('http://example.com')`, this event will fire when the network request to -1153 | * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen -1154 | * to this network request, use -1155 | * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) -1156 | * and -1157 | * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request) -1158 | * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page). -1159 | * -1160 | * ```js -1161 | * // Start waiting for popup before clicking. Note no await. -1162 | * const popupPromise = page.waitForEvent('popup'); -1163 | * await page.getByText('open the popup').click(); -1164 | * const popup = await popupPromise; -1165 | * console.log(await popup.evaluate('location.href')); -1166 | * ``` -1167 | * -1168 | * **NOTE** Use -1169 | * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to -1170 | * wait until the page gets to a particular state (you should not need it in most cases). -1171 | * -1172 | */ -1173 | on(event: 'popup', listener: (page: Page) => any): this; -1174 | -1175 | /** -1176 | * Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests, -1177 | * see [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or -1178 | * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route). -1179 | */ -1180 | on(event: 'request', listener: (request: Request) => any): this; -1181 | -1182 | /** -1183 | * Emitted when a request fails, for example by timing out. -1184 | * -1185 | * ```js -1186 | * page.on('requestfailed', request => { -1187 | * console.log(request.url() + ' ' + request.failure().errorText); -1188 | * }); -1189 | * ``` -1190 | * -1191 | * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request -1192 | * will complete with -1193 | * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished) event and not -1194 | * with [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed). A request -1195 | * will only be considered failed when the client cannot get an HTTP response from the server, e.g. due to network -1196 | * error net::ERR_FAILED. -1197 | * -1198 | */ -1199 | on(event: 'requestfailed', listener: (request: Request) => any): this; -1200 | -1201 | /** -1202 | * Emitted when a request finishes successfully after downloading the response body. For a successful response, the -1203 | * sequence of events is `request`, `response` and `requestfinished`. -1204 | */ -1205 | on(event: 'requestfinished', listener: (request: Request) => any): this; -1206 | -1207 | /** -1208 | * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of -1209 | * events is `request`, `response` and `requestfinished`. -1210 | */ -1211 | on(event: 'response', listener: (response: Response) => any): this; -1212 | -1213 | /** -1214 | * Emitted when [WebSocket](https://playwright.dev/docs/api/class-websocket) request is sent. -1215 | */ -1216 | on(event: 'websocket', listener: (webSocket: WebSocket) => any): this; -1217 | -1218 | /** -1219 | * Emitted when a dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned -1220 | * by the page. -1221 | */ -1222 | on(event: 'worker', listener: (worker: Worker) => any): this; -1223 | -1224 | /** -1225 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1226 | */ -1227 | once(event: 'close', listener: (page: Page) => any): this; -1228 | -1229 | /** -1230 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1231 | */ -1232 | once(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; -1233 | -1234 | /** -1235 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1236 | */ -1237 | once(event: 'crash', listener: (page: Page) => any): this; -1238 | -1239 | /** -1240 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1241 | */ -1242 | once(event: 'dialog', listener: (dialog: Dialog) => any): this; -1243 | -1244 | /** -1245 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1246 | */ -1247 | once(event: 'domcontentloaded', listener: (page: Page) => any): this; -1248 | -1249 | /** -1250 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1251 | */ -1252 | once(event: 'download', listener: (download: Download) => any): this; -1253 | -1254 | /** -1255 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1256 | */ -1257 | once(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; -1258 | -1259 | /** -1260 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1261 | */ -1262 | once(event: 'frameattached', listener: (frame: Frame) => any): this; -1263 | -1264 | /** -1265 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1266 | */ -1267 | once(event: 'framedetached', listener: (frame: Frame) => any): this; -1268 | -1269 | /** -1270 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1271 | */ -1272 | once(event: 'framenavigated', listener: (frame: Frame) => any): this; -1273 | -1274 | /** -1275 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1276 | */ -1277 | once(event: 'load', listener: (page: Page) => any): this; -1278 | -1279 | /** -1280 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1281 | */ -1282 | once(event: 'pageerror', listener: (error: Error) => any): this; -1283 | -1284 | /** -1285 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1286 | */ -1287 | once(event: 'popup', listener: (page: Page) => any): this; -1288 | -1289 | /** -1290 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1291 | */ -1292 | once(event: 'request', listener: (request: Request) => any): this; -1293 | -1294 | /** -1295 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1296 | */ -1297 | once(event: 'requestfailed', listener: (request: Request) => any): this; -1298 | -1299 | /** -1300 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1301 | */ -1302 | once(event: 'requestfinished', listener: (request: Request) => any): this; -1303 | -1304 | /** -1305 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1306 | */ -1307 | once(event: 'response', listener: (response: Response) => any): this; -1308 | -1309 | /** -1310 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1311 | */ -1312 | once(event: 'websocket', listener: (webSocket: WebSocket) => any): this; -1313 | -1314 | /** -1315 | * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event. -1316 | */ -1317 | once(event: 'worker', listener: (worker: Worker) => any): this; -1318 | -1319 | /** -1320 | * Emitted when the page closes. -1321 | */ -1322 | addListener(event: 'close', listener: (page: Page) => any): this; -1323 | -1324 | /** -1325 | * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. -1326 | * -1327 | * The arguments passed into `console.log` are available on the -1328 | * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument. -1329 | * -1330 | * **Usage** -1331 | * -1332 | * ```js -1333 | * page.on('console', async msg => { -1334 | * const values = []; -1335 | * for (const arg of msg.args()) -1336 | * values.push(await arg.jsonValue()); -1337 | * console.log(...values); -1338 | * }); -1339 | * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' })); -1340 | * ``` -1341 | * -1342 | */ -1343 | addListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; -1344 | -1345 | /** -1346 | * Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page -1347 | * crashes, ongoing and subsequent operations will throw. -1348 | * -1349 | * The most common way to deal with crashes is to catch an exception: -1350 | * -1351 | * ```js -1352 | * try { -1353 | * // Crash might happen during a click. -1354 | * await page.click('button'); -1355 | * // Or while waiting for an event. -1356 | * await page.waitForEvent('popup'); -1357 | * } catch (e) { -1358 | * // When the page crashes, exception message contains 'crash'. -1359 | * } -1360 | * ``` -1361 | * -1362 | */ -1363 | addListener(event: 'crash', listener: (page: Page) => any): this; -1364 | -1365 | /** -1366 | * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** -1367 | * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or -1368 | * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page -1369 | * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the -1370 | * dialog, and actions like click will never finish. -1371 | * -1372 | * **Usage** -1373 | * -1374 | * ```js -1375 | * page.on('dialog', dialog => dialog.accept()); -1376 | * ``` -1377 | * -1378 | * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or -1379 | * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog) -1380 | * listeners are present, all dialogs are automatically dismissed. -1381 | * -1382 | */ -1383 | addListener(event: 'dialog', listener: (dialog: Dialog) => any): this; -1384 | -1385 | /** -1386 | * Emitted when the JavaScript -1387 | * [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched. -1388 | */ -1389 | addListener(event: 'domcontentloaded', listener: (page: Page) => any): this; -1390 | -1391 | /** -1392 | * Emitted when attachment download started. User can access basic file operations on downloaded content via the -1393 | * passed [Download](https://playwright.dev/docs/api/class-download) instance. -1394 | */ -1395 | addListener(event: 'download', listener: (download: Download) => any): this; -1396 | -1397 | /** -1398 | * Emitted when a file chooser is supposed to appear, such as after clicking the ``. Playwright can -1399 | * respond to it via setting the input files using -1400 | * [fileChooser.setFiles(files[, options])](https://playwright.dev/docs/api/class-filechooser#file-chooser-set-files) -1401 | * that can be uploaded after that. -1402 | * -1403 | * ```js -1404 | * page.on('filechooser', async fileChooser => { -1405 | * await fileChooser.setFiles(path.join(__dirname, '/tmp/myfile.pdf')); -1406 | * }); -1407 | * ``` -1408 | * -1409 | */ -1410 | addListener(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; -1411 | -1412 | /** -1413 | * Emitted when a frame is attached. -1414 | */ -1415 | addListener(event: 'frameattached', listener: (frame: Frame) => any): this; -1416 | -1417 | /** -1418 | * Emitted when a frame is detached. -1419 | */ -1420 | addListener(event: 'framedetached', listener: (frame: Frame) => any): this; -1421 | -1422 | /** -1423 | * Emitted when a frame is navigated to a new url. -1424 | */ -1425 | addListener(event: 'framenavigated', listener: (frame: Frame) => any): this; -1426 | -1427 | /** -1428 | * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. -1429 | */ -1430 | addListener(event: 'load', listener: (page: Page) => any): this; -1431 | -1432 | /** -1433 | * Emitted when an uncaught exception happens within the page. -1434 | * -1435 | * ```js -1436 | * // Log all uncaught errors to the terminal -1437 | * page.on('pageerror', exception => { -1438 | * console.log(`Uncaught exception: "${exception}"`); -1439 | * }); -1440 | * -1441 | * // Navigate to a page with an exception. -1442 | * await page.goto('data:text/html,'); -1443 | * ``` -1444 | * -1445 | */ -1446 | addListener(event: 'pageerror', listener: (error: Error) => any): this; -1447 | -1448 | /** -1449 | * Emitted when the page opens a new tab or window. This event is emitted in addition to the -1450 | * [browserContext.on('page')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page), but -1451 | * only for popups relevant to this page. -1452 | * -1453 | * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a -1454 | * popup with `window.open('http://example.com')`, this event will fire when the network request to -1455 | * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen -1456 | * to this network request, use -1457 | * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) -1458 | * and -1459 | * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request) -1460 | * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page). -1461 | * -1462 | * ```js -1463 | * // Start waiting for popup before clicking. Note no await. -1464 | * const popupPromise = page.waitForEvent('popup'); -1465 | * await page.getByText('open the popup').click(); -1466 | * const popup = await popupPromise; -1467 | * console.log(await popup.evaluate('location.href')); -1468 | * ``` -1469 | * -1470 | * **NOTE** Use -1471 | * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to -1472 | * wait until the page gets to a particular state (you should not need it in most cases). -1473 | * -1474 | */ -1475 | addListener(event: 'popup', listener: (page: Page) => any): this; -1476 | -1477 | /** -1478 | * Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests, -1479 | * see [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or -1480 | * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route). -1481 | */ -1482 | addListener(event: 'request', listener: (request: Request) => any): this; -1483 | -1484 | /** -1485 | * Emitted when a request fails, for example by timing out. -1486 | * -1487 | * ```js -1488 | * page.on('requestfailed', request => { -1489 | * console.log(request.url() + ' ' + request.failure().errorText); -1490 | * }); -1491 | * ``` -1492 | * -1493 | * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request -1494 | * will complete with -1495 | * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished) event and not -1496 | * with [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed). A request -1497 | * will only be considered failed when the client cannot get an HTTP response from the server, e.g. due to network -1498 | * error net::ERR_FAILED. -1499 | * -1500 | */ -1501 | addListener(event: 'requestfailed', listener: (request: Request) => any): this; -1502 | -1503 | /** -1504 | * Emitted when a request finishes successfully after downloading the response body. For a successful response, the -1505 | * sequence of events is `request`, `response` and `requestfinished`. -1506 | */ -1507 | addListener(event: 'requestfinished', listener: (request: Request) => any): this; -1508 | -1509 | /** -1510 | * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of -1511 | * events is `request`, `response` and `requestfinished`. -1512 | */ -1513 | addListener(event: 'response', listener: (response: Response) => any): this; -1514 | -1515 | /** -1516 | * Emitted when [WebSocket](https://playwright.dev/docs/api/class-websocket) request is sent. -1517 | */ -1518 | addListener(event: 'websocket', listener: (webSocket: WebSocket) => any): this; -1519 | -1520 | /** -1521 | * Emitted when a dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned -1522 | * by the page. -1523 | */ -1524 | addListener(event: 'worker', listener: (worker: Worker) => any): this; -1525 | -1526 | /** -1527 | * Removes an event listener added by `on` or `addListener`. -1528 | */ -1529 | removeListener(event: 'close', listener: (page: Page) => any): this; -1530 | -1531 | /** -1532 | * Removes an event listener added by `on` or `addListener`. -1533 | */ -1534 | removeListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; -1535 | -1536 | /** -1537 | * Removes an event listener added by `on` or `addListener`. -1538 | */ -1539 | removeListener(event: 'crash', listener: (page: Page) => any): this; -1540 | -1541 | /** -1542 | * Removes an event listener added by `on` or `addListener`. -1543 | */ -1544 | removeListener(event: 'dialog', listener: (dialog: Dialog) => any): this; -1545 | -1546 | /** -1547 | * Removes an event listener added by `on` or `addListener`. -1548 | */ -1549 | removeListener(event: 'domcontentloaded', listener: (page: Page) => any): this; -1550 | -1551 | /** -1552 | * Removes an event listener added by `on` or `addListener`. -1553 | */ -1554 | removeListener(event: 'download', listener: (download: Download) => any): this; -1555 | -1556 | /** -1557 | * Removes an event listener added by `on` or `addListener`. -1558 | */ -1559 | removeListener(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; -1560 | -1561 | /** -1562 | * Removes an event listener added by `on` or `addListener`. -1563 | */ -1564 | removeListener(event: 'frameattached', listener: (frame: Frame) => any): this; -1565 | -1566 | /** -1567 | * Removes an event listener added by `on` or `addListener`. -1568 | */ -1569 | removeListener(event: 'framedetached', listener: (frame: Frame) => any): this; -1570 | -1571 | /** -1572 | * Removes an event listener added by `on` or `addListener`. -1573 | */ -1574 | removeListener(event: 'framenavigated', listener: (frame: Frame) => any): this; -1575 | -1576 | /** -1577 | * Removes an event listener added by `on` or `addListener`. -1578 | */ -1579 | removeListener(event: 'load', listener: (page: Page) => any): this; -1580 | -1581 | /** -1582 | * Removes an event listener added by `on` or `addListener`. -1583 | */ -1584 | removeListener(event: 'pageerror', listener: (error: Error) => any): this; -1585 | -1586 | /** -1587 | * Removes an event listener added by `on` or `addListener`. -1588 | */ -1589 | removeListener(event: 'popup', listener: (page: Page) => any): this; -1590 | -1591 | /** -1592 | * Removes an event listener added by `on` or `addListener`. -1593 | */ -1594 | removeListener(event: 'request', listener: (request: Request) => any): this; -1595 | -1596 | /** -1597 | * Removes an event listener added by `on` or `addListener`. -1598 | */ -1599 | removeListener(event: 'requestfailed', listener: (request: Request) => any): this; -1600 | -1601 | /** -1602 | * Removes an event listener added by `on` or `addListener`. -1603 | */ -1604 | removeListener(event: 'requestfinished', listener: (request: Request) => any): this; -1605 | -1606 | /** -1607 | * Removes an event listener added by `on` or `addListener`. -1608 | */ -1609 | removeListener(event: 'response', listener: (response: Response) => any): this; -1610 | -1611 | /** -1612 | * Removes an event listener added by `on` or `addListener`. -1613 | */ -1614 | removeListener(event: 'websocket', listener: (webSocket: WebSocket) => any): this; -1615 | -1616 | /** -1617 | * Removes an event listener added by `on` or `addListener`. -1618 | */ -1619 | removeListener(event: 'worker', listener: (worker: Worker) => any): this; -1620 | -1621 | /** -1622 | * Removes an event listener added by `on` or `addListener`. -1623 | */ -1624 | off(event: 'close', listener: (page: Page) => any): this; -1625 | -1626 | /** -1627 | * Removes an event listener added by `on` or `addListener`. -1628 | */ -1629 | off(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; -1630 | -1631 | /** -1632 | * Removes an event listener added by `on` or `addListener`. -1633 | */ -1634 | off(event: 'crash', listener: (page: Page) => any): this; -1635 | -1636 | /** -1637 | * Removes an event listener added by `on` or `addListener`. -1638 | */ -1639 | off(event: 'dialog', listener: (dialog: Dialog) => any): this; -1640 | -1641 | /** -1642 | * Removes an event listener added by `on` or `addListener`. -1643 | */ -1644 | off(event: 'domcontentloaded', listener: (page: Page) => any): this; -1645 | -1646 | /** -1647 | * Removes an event listener added by `on` or `addListener`. -1648 | */ -1649 | off(event: 'download', listener: (download: Download) => any): this; -1650 | -1651 | /** -1652 | * Removes an event listener added by `on` or `addListener`. -1653 | */ -1654 | off(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; -1655 | -1656 | /** -1657 | * Removes an event listener added by `on` or `addListener`. -1658 | */ -1659 | off(event: 'frameattached', listener: (frame: Frame) => any): this; -1660 | -1661 | /** -1662 | * Removes an event listener added by `on` or `addListener`. -1663 | */ -1664 | off(event: 'framedetached', listener: (frame: Frame) => any): this; -1665 | -1666 | /** -1667 | * Removes an event listener added by `on` or `addListener`. -1668 | */ -1669 | off(event: 'framenavigated', listener: (frame: Frame) => any): this; -1670 | -1671 | /** -1672 | * Removes an event listener added by `on` or `addListener`. -1673 | */ -1674 | off(event: 'load', listener: (page: Page) => any): this; -1675 | -1676 | /** -1677 | * Removes an event listener added by `on` or `addListener`. -1678 | */ -1679 | off(event: 'pageerror', listener: (error: Error) => any): this; -1680 | -1681 | /** -1682 | * Removes an event listener added by `on` or `addListener`. -1683 | */ -1684 | off(event: 'popup', listener: (page: Page) => any): this; -1685 | -1686 | /** -1687 | * Removes an event listener added by `on` or `addListener`. -1688 | */ -1689 | off(event: 'request', listener: (request: Request) => any): this; -1690 | -1691 | /** -1692 | * Removes an event listener added by `on` or `addListener`. -1693 | */ -1694 | off(event: 'requestfailed', listener: (request: Request) => any): this; -1695 | -1696 | /** -1697 | * Removes an event listener added by `on` or `addListener`. -1698 | */ -1699 | off(event: 'requestfinished', listener: (request: Request) => any): this; -1700 | -1701 | /** -1702 | * Removes an event listener added by `on` or `addListener`. -1703 | */ -1704 | off(event: 'response', listener: (response: Response) => any): this; -1705 | -1706 | /** -1707 | * Removes an event listener added by `on` or `addListener`. -1708 | */ -1709 | off(event: 'websocket', listener: (webSocket: WebSocket) => any): this; -1710 | -1711 | /** -1712 | * Removes an event listener added by `on` or `addListener`. -1713 | */ -1714 | off(event: 'worker', listener: (worker: Worker) => any): this; -1715 | -1716 | /** -1717 | * Emitted when the page closes. -1718 | */ -1719 | prependListener(event: 'close', listener: (page: Page) => any): this; -1720 | -1721 | /** -1722 | * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`. -1723 | * -1724 | * The arguments passed into `console.log` are available on the -1725 | * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument. -1726 | * -1727 | * **Usage** -1728 | * -1729 | * ```js -1730 | * page.on('console', async msg => { -1731 | * const values = []; -1732 | * for (const arg of msg.args()) -1733 | * values.push(await arg.jsonValue()); -1734 | * console.log(...values); -1735 | * }); -1736 | * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' })); -1737 | * ``` -1738 | * -1739 | */ -1740 | prependListener(event: 'console', listener: (consoleMessage: ConsoleMessage) => any): this; -1741 | -1742 | /** -1743 | * Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page -1744 | * crashes, ongoing and subsequent operations will throw. -1745 | * -1746 | * The most common way to deal with crashes is to catch an exception: -1747 | * -1748 | * ```js -1749 | * try { -1750 | * // Crash might happen during a click. -1751 | * await page.click('button'); -1752 | * // Or while waiting for an event. -1753 | * await page.waitForEvent('popup'); -1754 | * } catch (e) { -1755 | * // When the page crashes, exception message contains 'crash'. -1756 | * } -1757 | * ``` -1758 | * -1759 | */ -1760 | prependListener(event: 'crash', listener: (page: Page) => any): this; -1761 | -1762 | /** -1763 | * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must** -1764 | * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or -1765 | * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page -1766 | * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the -1767 | * dialog, and actions like click will never finish. -1768 | * -1769 | * **Usage** -1770 | * -1771 | * ```js -1772 | * page.on('dialog', dialog => dialog.accept()); -1773 | * ``` -1774 | * -1775 | * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or -1776 | * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog) -1777 | * listeners are present, all dialogs are automatically dismissed. -1778 | * -1779 | */ -1780 | prependListener(event: 'dialog', listener: (dialog: Dialog) => any): this; -1781 | -1782 | /** -1783 | * Emitted when the JavaScript -1784 | * [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched. -1785 | */ -1786 | prependListener(event: 'domcontentloaded', listener: (page: Page) => any): this; -1787 | -1788 | /** -1789 | * Emitted when attachment download started. User can access basic file operations on downloaded content via the -1790 | * passed [Download](https://playwright.dev/docs/api/class-download) instance. -1791 | */ -1792 | prependListener(event: 'download', listener: (download: Download) => any): this; -1793 | -1794 | /** -1795 | * Emitted when a file chooser is supposed to appear, such as after clicking the ``. Playwright can -1796 | * respond to it via setting the input files using -1797 | * [fileChooser.setFiles(files[, options])](https://playwright.dev/docs/api/class-filechooser#file-chooser-set-files) -1798 | * that can be uploaded after that. -1799 | * -1800 | * ```js -1801 | * page.on('filechooser', async fileChooser => { -1802 | * await fileChooser.setFiles(path.join(__dirname, '/tmp/myfile.pdf')); -1803 | * }); -1804 | * ``` -1805 | * -1806 | */ -1807 | prependListener(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this; -1808 | -1809 | /** -1810 | * Emitted when a frame is attached. -1811 | */ -1812 | prependListener(event: 'frameattached', listener: (frame: Frame) => any): this; -1813 | -1814 | /** -1815 | * Emitted when a frame is detached. -1816 | */ -1817 | prependListener(event: 'framedetached', listener: (frame: Frame) => any): this; -1818 | -1819 | /** -1820 | * Emitted when a frame is navigated to a new url. -1821 | */ -1822 | prependListener(event: 'framenavigated', listener: (frame: Frame) => any): this; -1823 | -1824 | /** -1825 | * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched. -1826 | */ -1827 | prependListener(event: 'load', listener: (page: Page) => any): this; -1828 | -1829 | /** -1830 | * Emitted when an uncaught exception happens within the page. -1831 | * -1832 | * ```js -1833 | * // Log all uncaught errors to the terminal -1834 | * page.on('pageerror', exception => { -1835 | * console.log(`Uncaught exception: "${exception}"`); -1836 | * }); -1837 | * -1838 | * // Navigate to a page with an exception. -1839 | * await page.goto('data:text/html,'); -1840 | * ``` -1841 | * -1842 | */ -1843 | prependListener(event: 'pageerror', listener: (error: Error) => any): this; -1844 | -1845 | /** -1846 | * Emitted when the page opens a new tab or window. This event is emitted in addition to the -1847 | * [browserContext.on('page')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page), but -1848 | * only for popups relevant to this page. -1849 | * -1850 | * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a -1851 | * popup with `window.open('http://example.com')`, this event will fire when the network request to -1852 | * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen -1853 | * to this network request, use -1854 | * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) -1855 | * and -1856 | * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request) -1857 | * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page). -1858 | * -1859 | * ```js -1860 | * // Start waiting for popup before clicking. Note no await. -1861 | * const popupPromise = page.waitForEvent('popup'); -1862 | * await page.getByText('open the popup').click(); -1863 | * const popup = await popupPromise; -1864 | * console.log(await popup.evaluate('location.href')); -1865 | * ``` -1866 | * -1867 | * **NOTE** Use -1868 | * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to -1869 | * wait until the page gets to a particular state (you should not need it in most cases). -1870 | * -1871 | */ -1872 | prependListener(event: 'popup', listener: (page: Page) => any): this; -1873 | -1874 | /** -1875 | * Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests, -1876 | * see [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or -1877 | * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route). -1878 | */ -1879 | prependListener(event: 'request', listener: (request: Request) => any): this; -1880 | -1881 | /** -1882 | * Emitted when a request fails, for example by timing out. -1883 | * -1884 | * ```js -1885 | * page.on('requestfailed', request => { -1886 | * console.log(request.url() + ' ' + request.failure().errorText); -1887 | * }); -1888 | * ``` -1889 | * -1890 | * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request -1891 | * will complete with -1892 | * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished) event and not -1893 | * with [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed). A request -1894 | * will only be considered failed when the client cannot get an HTTP response from the server, e.g. due to network -1895 | * error net::ERR_FAILED. -1896 | * -1897 | */ -1898 | prependListener(event: 'requestfailed', listener: (request: Request) => any): this; -1899 | -1900 | /** -1901 | * Emitted when a request finishes successfully after downloading the response body. For a successful response, the -1902 | * sequence of events is `request`, `response` and `requestfinished`. -1903 | */ -1904 | prependListener(event: 'requestfinished', listener: (request: Request) => any): this; -1905 | -1906 | /** -1907 | * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of -1908 | * events is `request`, `response` and `requestfinished`. -1909 | */ -1910 | prependListener(event: 'response', listener: (response: Response) => any): this; -1911 | -1912 | /** -1913 | * Emitted when [WebSocket](https://playwright.dev/docs/api/class-websocket) request is sent. -1914 | */ -1915 | prependListener(event: 'websocket', listener: (webSocket: WebSocket) => any): this; -1916 | -1917 | /** -1918 | * Emitted when a dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned -1919 | * by the page. -1920 | */ -1921 | prependListener(event: 'worker', listener: (worker: Worker) => any): this; -1922 | -1923 | /** -1924 | * When testing a web page, sometimes unexpected overlays like a "Sign up" dialog appear and block actions you want to -1925 | * automate, e.g. clicking a button. These overlays don't always show up in the same way or at the same time, making -1926 | * them tricky to handle in automated tests. -1927 | * -1928 | * This method lets you set up a special function, called a handler, that activates when it detects that overlay is -1929 | * visible. The handler's job is to remove the overlay, allowing your test to continue as if the overlay wasn't there. -1930 | * -1931 | * Things to keep in mind: -1932 | * - When an overlay is shown predictably, we recommend explicitly waiting for it in your test and dismissing it as -1933 | * a part of your normal test flow, instead of using -1934 | * [page.addLocatorHandler(locator, handler[, options])](https://playwright.dev/docs/api/class-page#page-add-locator-handler). -1935 | * - Playwright checks for the overlay every time before executing or retrying an action that requires an -1936 | * [actionability check](https://playwright.dev/docs/actionability), or before performing an auto-waiting assertion check. When overlay -1937 | * is visible, Playwright calls the handler first, and then proceeds with the action/assertion. Note that the -1938 | * handler is only called when you perform an action/assertion - if the overlay becomes visible but you don't -1939 | * perform any actions, the handler will not be triggered. -1940 | * - After executing the handler, Playwright will ensure that overlay that triggered the handler is not visible -1941 | * anymore. You can opt-out of this behavior with -1942 | * [`noWaitAfter`](https://playwright.dev/docs/api/class-page#page-add-locator-handler-option-no-wait-after). -1943 | * - The execution time of the handler counts towards the timeout of the action/assertion that executed the handler. -1944 | * If your handler takes too long, it might cause timeouts. -1945 | * - You can register multiple handlers. However, only a single handler will be running at a time. Make sure the -1946 | * actions within a handler don't depend on another handler. -1947 | * -1948 | * **NOTE** Running the handler will alter your page state mid-test. For example it will change the currently focused -1949 | * element and move the mouse. Make sure that actions that run after the handler are self-contained and do not rely on -1950 | * the focus and mouse state being unchanged. -1951 | * -1952 | * For example, consider a test that calls -1953 | * [locator.focus([options])](https://playwright.dev/docs/api/class-locator#locator-focus) followed by -1954 | * [keyboard.press(key[, options])](https://playwright.dev/docs/api/class-keyboard#keyboard-press). If your handler -1955 | * clicks a button between these two actions, the focused element most likely will be wrong, and key press will happen -1956 | * on the unexpected element. Use -1957 | * [locator.press(key[, options])](https://playwright.dev/docs/api/class-locator#locator-press) instead to avoid this -1958 | * problem. -1959 | * -1960 | * Another example is a series of mouse actions, where -1961 | * [mouse.move(x, y[, options])](https://playwright.dev/docs/api/class-mouse#mouse-move) is followed by -1962 | * [mouse.down([options])](https://playwright.dev/docs/api/class-mouse#mouse-down). Again, when the handler runs -1963 | * between these two actions, the mouse position will be wrong during the mouse down. Prefer self-contained actions -1964 | * like [locator.click([options])](https://playwright.dev/docs/api/class-locator#locator-click) that do not rely on -1965 | * the state being unchanged by a handler. -1966 | * -1967 | * **Usage** -1968 | * -1969 | * An example that closes a "Sign up to the newsletter" dialog when it appears: -1970 | * -1971 | * ```js -1972 | * // Setup the handler. -1973 | * await page.addLocatorHandler(page.getByText('Sign up to the newsletter'), async () => { -1974 | * await page.getByRole('button', { name: 'No thanks' }).click(); -1975 | * }); -1976 | * -1977 | * // Write the test as usual. -1978 | * await page.goto('https://example.com'); -1979 | * await page.getByRole('button', { name: 'Start here' }).click(); -1980 | * ``` -1981 | * -1982 | * An example that skips the "Confirm your security details" page when it is shown: -1983 | * -1984 | * ```js -1985 | * // Setup the handler. -1986 | * await page.addLocatorHandler(page.getByText('Confirm your security details'), async () => { -1987 | * await page.getByRole('button', { name: 'Remind me later' }).click(); -1988 | * }); -1989 | * -1990 | * // Write the test as usual. -1991 | * await page.goto('https://example.com'); -1992 | * await page.getByRole('button', { name: 'Start here' }).click(); -1993 | * ``` -1994 | * -1995 | * An example with a custom callback on every actionability check. It uses a `` locator that is always visible, -1996 | * so the handler is called before every actionability check. It is important to specify -1997 | * [`noWaitAfter`](https://playwright.dev/docs/api/class-page#page-add-locator-handler-option-no-wait-after), because -1998 | * the handler does not hide the `` element. -1999 | * -2000 | * ```js -2001 | * // Setup the handler. -2002 | * await page.addLocatorHandler(page.locator('body'), async () => { -2003 | * await page.evaluate(() => window.removeObstructionsForTestIfNeeded()); -2004 | * }, { noWaitAfter: true }); -2005 | * -2006 | * // Write the test as usual. -2007 | * await page.goto('https://example.com'); -2008 | * await page.getByRole('button', { name: 'Start here' }).click(); -2009 | * ``` -2010 | * -2011 | * Handler takes the original locator as an argument. You can also automatically remove the handler after a number of -2012 | * invocations by setting [`times`](https://playwright.dev/docs/api/class-page#page-add-locator-handler-option-times): -2013 | * -2014 | * ```js -2015 | * await page.addLocatorHandler(page.getByLabel('Close'), async locator => { -2016 | * await locator.click(); -2017 | * }, { times: 1 }); -2018 | * ``` -2019 | * -2020 | * @param locator Locator that triggers the handler. -2021 | * @param handler Function that should be run once -2022 | * [`locator`](https://playwright.dev/docs/api/class-page#page-add-locator-handler-option-locator) appears. This -2023 | * function should get rid of the element that blocks actions like click. -2024 | * @param options -2025 | */ -2026 | addLocatorHandler(locator: Locator, handler: ((locator: Locator) => Promise), options?: { -2027 | /** -2028 | * By default, after calling the handler Playwright will wait until the overlay becomes hidden, and only then -2029 | * Playwright will continue with the action/assertion that triggered the handler. This option allows to opt-out of -2030 | * this behavior, so that overlay can stay visible after the handler has run. -2031 | */ -2032 | noWaitAfter?: boolean; -2033 | -2034 | /** -2035 | * Specifies the maximum number of times this handler should be called. Unlimited by default. -2036 | */ -2037 | times?: number; -2038 | }): Promise; -2039 | -2040 | /** -2041 | * Adds a ` -2626 | * -2627 | *
-2628 | * `); -2629 | * await page.click('button'); -2630 | * })(); -2631 | * ``` -2632 | * -2633 | * @param name Name of the function on the window object -2634 | * @param callback Callback function which will be called in Playwright's context. -2635 | */ -2636 | exposeFunction(name: string, callback: Function): Promise; -2637 | -2638 | /** -2639 | * **NOTE** Use locator-based [locator.fill(value[, options])](https://playwright.dev/docs/api/class-locator#locator-fill) -2640 | * instead. Read more about [locators](https://playwright.dev/docs/locators). -2641 | * -2642 | * This method waits for an element matching -2643 | * [`selector`](https://playwright.dev/docs/api/class-page#page-fill-option-selector), waits for -2644 | * [actionability](https://playwright.dev/docs/actionability) checks, focuses the element, fills it and triggers an `input` event after -2645 | * filling. Note that you can pass an empty string to clear the input field. -2646 | * -2647 | * If the target element is not an ``, `