diff --git a/.version b/.version index ea55a03f..edcfe40d 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.13.7 +2.14.0 diff --git a/README.md b/README.md index e6f7c056..ae162fbc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@



- + @@ -36,6 +36,10 @@ so that the barrier for entry here is low. - Advanced Nginx configuration available for super users - User management, permissions and audit log +::: warning +`armv7` is no longer supported in version 2.14+. This is due to Nodejs dropping support for armhf. Please +use the `2.13.7` image tag if this applies to you. +::: ## Hosting your home network @@ -43,16 +47,15 @@ I won't go in to too much detail here but here are the basics for someone new to 1. Your home router will have a Port Forwarding section somewhere. Log in and find it 2. Add port forwarding for port 80 and 443 to the server hosting this project -3. Configure your domain name details to point to your home, either with a static ip or a service like DuckDNS or [Amazon Route53](https://github.com/jc21/route53-ddns) +3. Configure your domain name details to point to your home, either with a static ip or a service like + - DuckDNS + - [Amazon Route53](https://github.com/jc21/route53-ddns) + - [Cloudflare](https://github.com/jc21/cloudflare-ddns) 4. Use the Nginx Proxy Manager as your gateway to forward to your other web based services ## Quick Setup -1. Install Docker and Docker-Compose - -- [Docker Install documentation](https://docs.docker.com/install/) -- [Docker-Compose Install documentation](https://docs.docker.com/compose/install/) - +1. [Install Docker](https://docs.docker.com/install/) 2. Create a docker-compose.yml file similar to this: ```yml diff --git a/backend/certbot/dns-plugins.json b/backend/certbot/dns-plugins.json index 02288db5..8f592f66 100644 --- a/backend/certbot/dns-plugins.json +++ b/backend/certbot/dns-plugins.json @@ -23,6 +23,14 @@ "credentials": "dns_aliyun_access_key = 12345678\ndns_aliyun_access_key_secret = 1234567890abcdef1234567890abcdef", "full_plugin_name": "dns-aliyun" }, + "arvan": { + "name": "ArvanCloud", + "package_name": "certbot-dns-arvan", + "version": ">=0.1.0", + "dependencies": "", + "credentials": "dns_arvan_key = Apikey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "full_plugin_name": "dns-arvan" + }, "azure": { "name": "Azure", "package_name": "certbot-dns-azure", diff --git a/backend/config/sqlite-test-db.json b/backend/config/sqlite-test-db.json index ad548865..b0e87075 100644 --- a/backend/config/sqlite-test-db.json +++ b/backend/config/sqlite-test-db.json @@ -2,7 +2,7 @@ "database": { "engine": "knex-native", "knex": { - "client": "sqlite3", + "client": "better-sqlite3", "connection": { "filename": "/app/config/mydb.sqlite" }, diff --git a/backend/internal/2fa.js b/backend/internal/2fa.js index 4251520c..43307e02 100644 --- a/backend/internal/2fa.js +++ b/backend/internal/2fa.js @@ -161,9 +161,12 @@ const internal2fa = { } const result = await verify({ - token: code, - secret: auth.meta.totp_secret, - }); + token: code, + secret: auth.meta.totp_secret, + guardrails: createGuardrails({ + MIN_SECRET_BYTES: 10, + }), + }); if (!result.valid) { throw new errs.AuthError("Invalid verification code"); diff --git a/backend/internal/certificate.js b/backend/internal/certificate.js index bde1bdca..d54e941d 100644 --- a/backend/internal/certificate.js +++ b/backend/internal/certificate.js @@ -630,7 +630,7 @@ const internalCertificate = { * @param {String} privateKey This is the entire key contents as a string */ checkPrivateKey: async (privateKey) => { - const filepath = await tempWrite(privateKey, "/tmp"); + const filepath = await tempWrite(privateKey); const failTimeout = setTimeout(() => { throw new error.ValidationError( "Result Validation Error: Validation timed out. This could be due to the key being passphrase-protected.", @@ -660,8 +660,8 @@ const internalCertificate = { * @param {Boolean} [throwExpired] Throw when the certificate is out of date */ getCertificateInfo: async (certificate, throwExpired) => { + const filepath = await tempWrite(certificate); try { - const filepath = await tempWrite(certificate, "/tmp"); const certData = await internalCertificate.getCertificateInfoFromFile(filepath, throwExpired); fs.unlinkSync(filepath); return certData; diff --git a/backend/migrations/20260131163528_trust_forwarded_proto.js b/backend/migrations/20260131163528_trust_forwarded_proto.js new file mode 100644 index 00000000..546cbca6 --- /dev/null +++ b/backend/migrations/20260131163528_trust_forwarded_proto.js @@ -0,0 +1,43 @@ +import { migrate as logger } from "../logger.js"; + +const migrateName = "trust_forwarded_proto"; + +/** + * Migrate + * + * @see http://knexjs.org/#Schema + * + * @param {Object} knex + * @returns {Promise} + */ +const up = function (knex) { + logger.info(`[${migrateName}] Migrating Up...`); + + return knex.schema + .alterTable('proxy_host', (table) => { + table.tinyint('trust_forwarded_proto').notNullable().defaultTo(0); + }) + .then(() => { + logger.info(`[${migrateName}] proxy_host Table altered`); + }); +}; + +/** + * Undo Migrate + * + * @param {Object} knex + * @returns {Promise} + */ +const down = function (knex) { + logger.info(`[${migrateName}] Migrating Down...`); + + return knex.schema + .alterTable('proxy_host', (table) => { + table.dropColumn('trust_forwarded_proto'); + }) + .then(() => { + logger.info(`[${migrateName}] proxy_host Table altered`); + }); +}; + +export { up, down }; \ No newline at end of file diff --git a/backend/models/proxy_host.js b/backend/models/proxy_host.js index b6ce6361..e8f447c8 100644 --- a/backend/models/proxy_host.js +++ b/backend/models/proxy_host.js @@ -21,6 +21,7 @@ const boolFields = [ "enabled", "hsts_enabled", "hsts_subdomains", + "trust_forwarded_proto", ]; class ProxyHost extends Model { diff --git a/backend/package.json b/backend/package.json index 9381b272..89f21c55 100644 --- a/backend/package.json +++ b/backend/package.json @@ -13,7 +13,7 @@ }, "dependencies": { "@apidevtools/json-schema-ref-parser": "^14.1.1", - "ajv": "^8.17.1", + "ajv": "^8.18.0", "archiver": "^7.0.1", "batchflow": "^0.4.0", "bcrypt": "^6.0.0", @@ -28,10 +28,10 @@ "liquidjs": "10.24.0", "lodash": "^4.17.23", "moment": "^2.30.1", - "mysql2": "^3.16.3", + "mysql2": "^3.17.1", "node-rsa": "^1.1.1", "objection": "3.1.5", - "otplib": "^13.2.1", + "otplib": "^13.3.0", "path": "^0.12.7", "pg": "^8.18.0", "proxy-agent": "^6.5.0", diff --git a/backend/schema/components/proxy-host-object.json b/backend/schema/components/proxy-host-object.json index 464b188e..3ac64621 100644 --- a/backend/schema/components/proxy-host-object.json +++ b/backend/schema/components/proxy-host-object.json @@ -22,7 +22,8 @@ "enabled", "locations", "hsts_enabled", - "hsts_subdomains" + "hsts_subdomains", + "trust_forwarded_proto" ], "properties": { "id": { @@ -141,6 +142,11 @@ "hsts_subdomains": { "$ref": "../common.json#/properties/hsts_subdomains" }, + "trust_forwarded_proto":{ + "type": "boolean", + "description": "Trust the forwarded headers", + "example": false + }, "certificate": { "oneOf": [ { diff --git a/backend/schema/paths/nginx/proxy-hosts/get.json b/backend/schema/paths/nginx/proxy-hosts/get.json index 7f8cb148..301e28bf 100644 --- a/backend/schema/paths/nginx/proxy-hosts/get.json +++ b/backend/schema/paths/nginx/proxy-hosts/get.json @@ -58,7 +58,8 @@ "enabled": true, "locations": [], "hsts_enabled": false, - "hsts_subdomains": false + "hsts_subdomains": false, + "trust_forwarded_proto": false } ] } diff --git a/backend/schema/paths/nginx/proxy-hosts/hostID/get.json b/backend/schema/paths/nginx/proxy-hosts/hostID/get.json index 351451c4..2e677fed 100644 --- a/backend/schema/paths/nginx/proxy-hosts/hostID/get.json +++ b/backend/schema/paths/nginx/proxy-hosts/hostID/get.json @@ -56,6 +56,7 @@ "locations": [], "hsts_enabled": false, "hsts_subdomains": false, + "trust_forwarded_proto": false, "owner": { "id": 1, "created_on": "2025-10-28T00:50:24.000Z", diff --git a/backend/schema/paths/nginx/proxy-hosts/hostID/put.json b/backend/schema/paths/nginx/proxy-hosts/hostID/put.json index 7ae60e1a..fc319845 100644 --- a/backend/schema/paths/nginx/proxy-hosts/hostID/put.json +++ b/backend/schema/paths/nginx/proxy-hosts/hostID/put.json @@ -56,6 +56,9 @@ "hsts_subdomains": { "$ref": "../../../../components/proxy-host-object.json#/properties/hsts_subdomains" }, + "trust_forwarded_proto": { + "$ref": "../../../../components/proxy-host-object.json#/properties/trust_forwarded_proto" + }, "http2_support": { "$ref": "../../../../components/proxy-host-object.json#/properties/http2_support" }, @@ -122,6 +125,7 @@ "locations": [], "hsts_enabled": false, "hsts_subdomains": false, + "trust_forwarded_proto": false, "owner": { "id": 1, "created_on": "2025-10-28T00:50:24.000Z", diff --git a/backend/schema/paths/nginx/proxy-hosts/post.json b/backend/schema/paths/nginx/proxy-hosts/post.json index 77d772e9..28ddad8f 100644 --- a/backend/schema/paths/nginx/proxy-hosts/post.json +++ b/backend/schema/paths/nginx/proxy-hosts/post.json @@ -48,6 +48,9 @@ "hsts_subdomains": { "$ref": "../../../components/proxy-host-object.json#/properties/hsts_subdomains" }, + "trust_forwarded_proto": { + "$ref": "../../../components/proxy-host-object.json#/properties/trust_forwarded_proto" + }, "http2_support": { "$ref": "../../../components/proxy-host-object.json#/properties/http2_support" }, @@ -119,6 +122,7 @@ "locations": [], "hsts_enabled": false, "hsts_subdomains": false, + "trust_forwarded_proto": false, "certificate": null, "owner": { "id": 1, diff --git a/backend/templates/_forced_ssl.conf b/backend/templates/_forced_ssl.conf index 7fade20c..886e866e 100644 --- a/backend/templates/_forced_ssl.conf +++ b/backend/templates/_forced_ssl.conf @@ -1,6 +1,11 @@ {% if certificate and certificate_id > 0 -%} {% if ssl_forced == 1 or ssl_forced == true %} # Force SSL + {% if trust_forwarded_proto == true %} + set $trust_forwarded_proto "T"; + {% else %} + set $trust_forwarded_proto "F"; + {% endif %} include conf.d/include/force-ssl.conf; {% endif %} {% endif %} \ No newline at end of file diff --git a/backend/yarn.lock b/backend/yarn.lock index 47954da1..6c146b6e 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -132,50 +132,50 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@otplib/core@13.2.1": - version "13.2.1" - resolved "https://registry.yarnpkg.com/@otplib/core/-/core-13.2.1.tgz#83449322a390b6b4c045b2e799cbd1f7718f1f64" - integrity sha512-IyfHvYNCyipDxhmJdcUUvUeT3Hz84/GgM6G2G6BTEmnAKPzNA7U0kYGkxKZWY9h23W94RJk4qiClJRJN5zKGvg== +"@otplib/core@13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@otplib/core/-/core-13.3.0.tgz#7f037af6cc5907c2cff9cf6092952088a0ce5a6e" + integrity sha512-pnQDOuCmFVeF/XnboJq9TOJgLoo2idNPJKMymOF8vGqJJ+ReKRYM9bUGjNPRWC0tHjMwu1TXbnzyBp494JgRag== -"@otplib/hotp@13.2.1": - version "13.2.1" - resolved "https://registry.yarnpkg.com/@otplib/hotp/-/hotp-13.2.1.tgz#6149c877e5a51fd1c527ada535fe75ca4f525eee" - integrity sha512-iRKqvj0TnemtXXtEswzBX50Z0yMNa0lH9PSdr5N4CJc1mDEuUmFFZQqnu3PfA3fPd3WeAU+mHgmK/xq18+K1QA== +"@otplib/hotp@13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@otplib/hotp/-/hotp-13.3.0.tgz#135e45c6350ae60bbc1170a1801a6100e49794b8" + integrity sha512-XJMZGz2bg4QJwK7ulvl1GUI2VMn/flaIk/E/BTKAejHsX2kUtPF1bRhlZ2+elq8uU5Fs9Z9FHcQK2CPZNQbbUQ== dependencies: - "@otplib/core" "13.2.1" - "@otplib/uri" "13.2.1" + "@otplib/core" "13.3.0" + "@otplib/uri" "13.3.0" -"@otplib/plugin-base32-scure@13.2.1": - version "13.2.1" - resolved "https://registry.yarnpkg.com/@otplib/plugin-base32-scure/-/plugin-base32-scure-13.2.1.tgz#2e7b1849311bfafd630fa87ce2812b7c3c718675" - integrity sha512-vnA2qqgJ/FbFbDNGOLAS8dKfCsJFXwFsZKYklE8yl2INkCOUR0vbVdJ2TVmufzC8R1RRZHW+cDR20ACgc9XFYg== +"@otplib/plugin-base32-scure@13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@otplib/plugin-base32-scure/-/plugin-base32-scure-13.3.0.tgz#3362fc5dd568e9cecac913fd0fa169148c469142" + integrity sha512-/jYbL5S6GB0Ie3XGEWtLIr9s5ZICl/BfmNL7+8/W7usZaUU4GiyLd2S+JGsNCslPyqNekSudD864nDAvRI0s8w== dependencies: - "@otplib/core" "13.2.1" + "@otplib/core" "13.3.0" "@scure/base" "^2.0.0" -"@otplib/plugin-crypto-noble@13.2.1": - version "13.2.1" - resolved "https://registry.yarnpkg.com/@otplib/plugin-crypto-noble/-/plugin-crypto-noble-13.2.1.tgz#11f6325f4593f57360af2268313b94003b225807" - integrity sha512-Dxjmt4L+5eDWJf5EvbcMp+fxcliyKoB9N9sNQq/vuVAUvq+KiqpiiCQZ/wHyrN0ArB0NdevtK1KByyAq080ldg== +"@otplib/plugin-crypto-noble@13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@otplib/plugin-crypto-noble/-/plugin-crypto-noble-13.3.0.tgz#edfd6c8c54730cfdfc52c6a3fcd797e204fdd0e2" + integrity sha512-wmV+jBVncepgwv99G7Plrdzd0tHfbpXk2U+OD7MO7DzpDqOYEgOPi+IIneksJSTL8QvWdfi+uQEuhnER4fKouA== dependencies: "@noble/hashes" "^2.0.1" - "@otplib/core" "13.2.1" + "@otplib/core" "13.3.0" -"@otplib/totp@13.2.1": - version "13.2.1" - resolved "https://registry.yarnpkg.com/@otplib/totp/-/totp-13.2.1.tgz#2c8f8a8d87cf6e440d9050d363dfd24bc25179d6" - integrity sha512-LzDzAAK3w8rspF3urBnWjOlxso1SCGxX9Pnu/iy+HkC0y0HgiLsW7jhkr2hJ3u4cyBdL/tOKUhhELwsjyvunwQ== +"@otplib/totp@13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@otplib/totp/-/totp-13.3.0.tgz#1d1f61cfd1acd773e1051e6b918227ae34545808" + integrity sha512-XfjGNoN8d9S3Ove2j7AwkVV7+QDFsV7Lm7YwSiezNaHffkWtJ60aJYpmf+01dARdPST71U2ptueMsRJso4sq4A== dependencies: - "@otplib/core" "13.2.1" - "@otplib/hotp" "13.2.1" - "@otplib/uri" "13.2.1" + "@otplib/core" "13.3.0" + "@otplib/hotp" "13.3.0" + "@otplib/uri" "13.3.0" -"@otplib/uri@13.2.1": - version "13.2.1" - resolved "https://registry.yarnpkg.com/@otplib/uri/-/uri-13.2.1.tgz#50054fe922f3610e7558b0c5337353770c1f382e" - integrity sha512-ssYnfiUrFTs/rPRUW8h59m0MVLYOC+UKk7tVGYgtG15lLaLBrNBQjM2YFanuzn9Jm4iv9JxiNG7TRkwcnyR09A== +"@otplib/uri@13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@otplib/uri/-/uri-13.3.0.tgz#7474d6dc0fdf8ab2d0cf2b79e2001446c4e7b6b3" + integrity sha512-3oh6nBXy+cm3UX9cxEAGZiDrfxHU2gfelYFV+XNCx+8dq39VaQVymwlU2yjPZiMAi/3agaUeEftf2RwM5F+Cyg== dependencies: - "@otplib/core" "13.2.1" + "@otplib/core" "13.3.0" "@pkgjs/parseargs@^0.11.0": version "0.11.0" @@ -261,10 +261,10 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv@^8.0.0, ajv@^8.17.1: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" - integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== +ajv@^8.0.0, ajv@^8.17.1, ajv@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc" + integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A== dependencies: fast-deep-equal "^3.1.3" fast-uri "^3.0.1" @@ -1861,10 +1861,10 @@ ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mysql2@^3.16.3: - version "3.16.3" - resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.16.3.tgz#59491bfa13f1979c2a87fd1ef68a3eb83fd58fcb" - integrity sha512-+3XhQEt4FEFuvGV0JjIDj4eP2OT/oIj/54dYvqhblnSzlfcxVOuj+cd15Xz6hsG4HU1a+A5+BA9gm0618C4z7A== +mysql2@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.17.1.tgz#781292f60df3806949c0a3161a51ad3e4e4689a1" + integrity sha512-UzIzdVwPXPoZm+FaJ4lNsRt28HtUwt68gpLH7NP1oSjd91M5Qn1XJzbIsSRMRc5CV3pvktLNshmbaFfMYqPBhQ== dependencies: aws-ssl-profiles "^1.1.2" denque "^2.1.0" @@ -1874,7 +1874,7 @@ mysql2@^3.16.3: lru.min "^1.1.3" named-placeholders "^1.1.6" seq-queue "^0.0.5" - sqlstring "^2.3.3" + sql-escaper "^1.3.2" named-placeholders@^1.1.6: version "1.1.6" @@ -2019,17 +2019,17 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -otplib@^13.2.1: - version "13.2.1" - resolved "https://registry.yarnpkg.com/otplib/-/otplib-13.2.1.tgz#39cc114228409ff30cfa6779e2f8cb007b535942" - integrity sha512-Cft9h/m34LtvnoB2TjP1E1E6v0biwcUntl6U4e+HgWrTa0bpwmb+u/D9gLFA+U6/ztlvrult0811Bu30nUVUuA== +otplib@^13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/otplib/-/otplib-13.3.0.tgz#2ead040ab29d1a829d1d7c510b059a3e4c76b2b0" + integrity sha512-VYMKyyDG8yt2q+z58sz54/EIyTh7+tyMrjeemR44iVh5+dkKtIs57irTqxjH+IkAL1uMmG1JIFhG5CxTpqdU5g== dependencies: - "@otplib/core" "13.2.1" - "@otplib/hotp" "13.2.1" - "@otplib/plugin-base32-scure" "13.2.1" - "@otplib/plugin-crypto-noble" "13.2.1" - "@otplib/totp" "13.2.1" - "@otplib/uri" "13.2.1" + "@otplib/core" "13.3.0" + "@otplib/hotp" "13.3.0" + "@otplib/plugin-base32-scure" "13.3.0" + "@otplib/plugin-crypto-noble" "13.3.0" + "@otplib/totp" "13.3.0" + "@otplib/uri" "13.3.0" p-limit@^1.1.0: version "1.3.0" @@ -2345,9 +2345,9 @@ pump@^3.0.0: once "^1.3.1" qs@^6.14.0, qs@^6.14.1: - version "6.14.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.1.tgz#a41d85b9d3902f31d27861790506294881871159" - integrity sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ== + version "6.14.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.2.tgz#b5634cf9d9ad9898e31fba3504e866e8efb6798c" + integrity sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q== dependencies: side-channel "^1.1.0" @@ -2687,6 +2687,11 @@ split2@^4.1.0: resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== +sql-escaper@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/sql-escaper/-/sql-escaper-1.3.2.tgz#b11c68c6541fc05afdf508d52e54af7219455fad" + integrity sha512-lp+ZDVfSjHt+qAK1jXBTIXBNYnbo7gnaAGwoYTH9bE89kNkXwcu6g0WjJGRsdTKVpY1z70u3Y0IgmnBOoRybHw== + sqlite3@^5.1.7: version "5.1.7" resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.7.tgz#59ca1053c1ab38647396586edad019b1551041b7" @@ -2699,11 +2704,6 @@ sqlite3@^5.1.7: optionalDependencies: node-gyp "8.x" -sqlstring@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" - integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== - ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" diff --git a/docker/rootfs/etc/nginx/conf.d/include/force-ssl.conf b/docker/rootfs/etc/nginx/conf.d/include/force-ssl.conf index e43c2fc8..8e58c64a 100644 --- a/docker/rootfs/etc/nginx/conf.d/include/force-ssl.conf +++ b/docker/rootfs/etc/nginx/conf.d/include/force-ssl.conf @@ -5,9 +5,28 @@ if ($scheme = "http") { if ($request_uri = /.well-known/acme-challenge/test-challenge) { set $test "${test}T"; } + +# Check if the ssl staff has been handled +set $test_ssl_handled ""; +if ($trust_forwarded_proto = "") { + set $trust_forwarded_proto "F"; +} +if ($trust_forwarded_proto = "T") { + set $test_ssl_handled "${test_ssl_handled}T"; +} if ($http_x_forwarded_proto = "https") { + set $test_ssl_handled "${test_ssl_handled}S"; +} +if ($http_x_forwarded_scheme = "https") { + set $test_ssl_handled "${test_ssl_handled}S"; +} +if ($test_ssl_handled = "TSS") { + set $test_ssl_handled "TS"; +} +if ($test_ssl_handled = "TS") { set $test "${test}S"; } + if ($test = H) { return 301 https://$host$request_uri; } diff --git a/docker/rootfs/etc/nginx/conf.d/include/proxy.conf b/docker/rootfs/etc/nginx/conf.d/include/proxy.conf index d346c4ef..fe2c2f21 100644 --- a/docker/rootfs/etc/nginx/conf.d/include/proxy.conf +++ b/docker/rootfs/etc/nginx/conf.d/include/proxy.conf @@ -1,7 +1,7 @@ add_header X-Served-By $host; proxy_set_header Host $host; -proxy_set_header X-Forwarded-Scheme $scheme; -proxy_set_header X-Forwarded-Proto $scheme; +proxy_set_header X-Forwarded-Scheme $x_forwarded_scheme; +proxy_set_header X-Forwarded-Proto $x_forwarded_proto; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_pass $forward_scheme://$server:$port$request_uri; diff --git a/docker/rootfs/etc/nginx/nginx.conf b/docker/rootfs/etc/nginx/nginx.conf index 0a83ef0c..892cf158 100644 --- a/docker/rootfs/etc/nginx/nginx.conf +++ b/docker/rootfs/etc/nginx/nginx.conf @@ -57,6 +57,18 @@ http { default http; } + # Handle upstream X-Forwarded-Proto and X-Forwarded-Scheme header + map $http_x_forwarded_proto $x_forwarded_proto { + "http" "http"; + "https" "https"; + default $scheme; + } + map $http_x_forwarded_scheme $x_forwarded_scheme { + "http" "http"; + "https" "https"; + default $scheme; + } + # Real IP Determination # Local subnets: diff --git a/docker/scripts/install-s6 b/docker/scripts/install-s6 index 639c65dd..5fcb4e09 100755 --- a/docker/scripts/install-s6 +++ b/docker/scripts/install-s6 @@ -17,10 +17,6 @@ case $TARGETPLATFORM in S6_ARCH=aarch64 ;; - linux/arm/v7) - S6_ARCH=armhf - ;; - *) S6_ARCH=x86_64 ;; diff --git a/docs/src/setup/index.md b/docs/src/setup/index.md index 998508dd..49b9e618 100644 --- a/docs/src/setup/index.md +++ b/docs/src/setup/index.md @@ -169,7 +169,11 @@ Custom Postgres schema is not supported, as such `public` will be used. The docker images support the following architectures: - amd64 - arm64 -- armv7 + +::: warning +`armv7` is no longer supported in version 2.14+. This is due to Nodejs dropping support for armhf. Please +use the `2.13.7` image tag if this applies to you. +::: The docker images are a manifest of all the architecture docker builds supported, so this means you don't have to worry about doing anything special and you can follow the common instructions above. diff --git a/frontend/check-locales.cjs b/frontend/check-locales.cjs index a73cd757..135dab10 100755 --- a/frontend/check-locales.cjs +++ b/frontend/check-locales.cjs @@ -18,6 +18,7 @@ const allLocales = [ ["pl", "pl-PL"], ["ru", "ru-RU"], ["sk", "sk-SK"], + ["cs", "cs-CZ"], ["vi", "vi-VN"], ["zh", "zh-CN"], ["ko", "ko-KR"], diff --git a/frontend/package.json b/frontend/package.json index da684a03..0c164f52 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -18,11 +18,11 @@ "dependencies": { "@tabler/core": "^1.4.0", "@tabler/icons-react": "^3.36.1", - "@tanstack/react-query": "^5.90.20", + "@tanstack/react-query": "^5.90.21", "@tanstack/react-table": "^8.21.3", "@uiw/react-textarea-code-editor": "^3.1.1", "classnames": "^2.5.1", - "country-flag-icons": "^1.6.12", + "country-flag-icons": "^1.6.13", "date-fns": "^4.1.0", "ez-modal-react": "^1.0.5", "formik": "^2.4.9", @@ -40,7 +40,7 @@ "rooks": "^9.5.0" }, "devDependencies": { - "@biomejs/biome": "^2.3.14", + "@biomejs/biome": "^2.4.2", "@formatjs/cli": "^6.12.2", "@tanstack/react-query-devtools": "^5.91.3", "@testing-library/dom": "^10.4.1", @@ -48,11 +48,11 @@ "@testing-library/react": "^16.3.2", "@types/country-flag-icons": "^1.2.2", "@types/humps": "^2.0.6", - "@types/react": "^19.2.10", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/react-table": "^7.7.20", - "@vitejs/plugin-react": "^5.1.3", - "happy-dom": "^20.5.0", + "@vitejs/plugin-react": "^5.1.4", + "happy-dom": "^20.6.1", "postcss": "^8.5.6", "postcss-simple-vars": "^7.0.1", "sass": "^1.97.3", @@ -60,7 +60,7 @@ "typescript": "5.9.3", "vite": "^7.3.1", "vite-plugin-checker": "^0.12.0", - "vite-tsconfig-paths": "^6.0.5", + "vite-tsconfig-paths": "^6.1.1", "vitest": "^4.0.18" } } diff --git a/frontend/src/api/backend/models.ts b/frontend/src/api/backend/models.ts index d63d47ae..2ae0b083 100644 --- a/frontend/src/api/backend/models.ts +++ b/frontend/src/api/backend/models.ts @@ -127,6 +127,7 @@ export interface ProxyHost { locations?: ProxyLocation[]; hstsEnabled: boolean; hstsSubdomains: boolean; + trustForwardedProto: boolean; // Expansions: owner?: User; accessList?: AccessList; diff --git a/frontend/src/components/Form/SSLOptionsFields.tsx b/frontend/src/components/Form/SSLOptionsFields.tsx index 1c5b9f9a..ecf23d26 100644 --- a/frontend/src/components/Form/SSLOptionsFields.tsx +++ b/frontend/src/components/Form/SSLOptionsFields.tsx @@ -5,17 +5,18 @@ import { T } from "src/locale"; interface Props { forHttp?: boolean; // the sslForced, http2Support, hstsEnabled, hstsSubdomains fields + forProxyHost?: boolean; // the advanced fields forceDNSForNew?: boolean; requireDomainNames?: boolean; // used for streams color?: string; } -export function SSLOptionsFields({ forHttp = true, forceDNSForNew, requireDomainNames, color = "bg-cyan" }: Props) { +export function SSLOptionsFields({ forHttp = true, forProxyHost = false, forceDNSForNew, requireDomainNames, color = "bg-cyan" }: Props) { const { values, setFieldValue } = useFormikContext(); const v: any = values || {}; const newCertificate = v?.certificateId === "new"; const hasCertificate = newCertificate || (v?.certificateId && v?.certificateId > 0); - const { sslForced, http2Support, hstsEnabled, hstsSubdomains, meta } = v; + const { sslForced, http2Support, hstsEnabled, hstsSubdomains, trustForwardedProto, meta } = v; const { dnsChallenge } = meta || {}; if (forceDNSForNew && newCertificate && !dnsChallenge) { @@ -115,6 +116,34 @@ export function SSLOptionsFields({ forHttp = true, forceDNSForNew, requireDomain ); + const getHttpAdvancedOptions = () =>( +

+
+ +
+
+ + {({ field }: any) => ( + + )} + +
+
+
+
+ ); + return (
{forHttp ? getHttpOptions() : null} @@ -140,6 +169,7 @@ export function SSLOptionsFields({ forHttp = true, forceDNSForNew, requireDomain {dnsChallenge ? : null} ) : null} + {forProxyHost && forHttp ? getHttpAdvancedOptions() : null}
); } diff --git a/frontend/src/hooks/useProxyHost.ts b/frontend/src/hooks/useProxyHost.ts index e6a2adea..24e7f4fa 100644 --- a/frontend/src/hooks/useProxyHost.ts +++ b/frontend/src/hooks/useProxyHost.ts @@ -24,6 +24,7 @@ const fetchProxyHost = (id: number | "new") => { enabled: true, hstsEnabled: false, hstsSubdomains: false, + trustForwardedProto: false, } as ProxyHost); } return getProxyHost(id, ["owner"]); diff --git a/frontend/src/locale/IntlProvider.tsx b/frontend/src/locale/IntlProvider.tsx index 507d938c..8e65546a 100755 --- a/frontend/src/locale/IntlProvider.tsx +++ b/frontend/src/locale/IntlProvider.tsx @@ -14,6 +14,7 @@ import langNl from "./lang/nl.json"; import langPl from "./lang/pl.json"; import langRu from "./lang/ru.json"; import langSk from "./lang/sk.json"; +import langCs from "./lang/cs.json"; import langVi from "./lang/vi.json"; import langZh from "./lang/zh.json"; import langTr from "./lang/tr.json"; @@ -36,6 +37,7 @@ const localeOptions = [ ["pl", "pl-PL", langPl], ["ru", "ru-RU", langRu], ["sk", "sk-SK", langSk], + ["cs", "cs-CZ", langCs], ["vi", "vi-VN", langVi], ["zh", "zh-CN", langZh], ["ko", "ko-KR", langKo], @@ -65,6 +67,7 @@ const getFlagCodeForLocale = (locale?: string) => { zh: "cn", // China vi: "vn", // Vietnam ko: "kr", // Korea + cs: "cz", // Czechia }; if (specialCases[thisLocale]) { diff --git a/frontend/src/locale/src/HelpDoc/cs/AccessLists.md b/frontend/src/locale/src/HelpDoc/cs/AccessLists.md new file mode 100644 index 00000000..78d9be6e --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/cs/AccessLists.md @@ -0,0 +1,7 @@ +## Co je seznam přístupů? + +Seznamy přístupů poskytují blacklist nebo whitelist konkrétních IP adres klientů spolu s ověřením pro proxy hostitele prostřednictvím základního ověřování HTTP. + +Můžete nakonfigurovat více pravidel pro klienty, uživatelská jména a hesla pro jeden seznam přístupu a poté ho použít na jednoho nebo více proxy hostitelů. + +Toto je nejužitečnější pro přesměrované webové služby, které nemají vestavěné ověřovací mechanismy, nebo pokud se chcete chránit před neznámými klienty. diff --git a/frontend/src/locale/src/HelpDoc/cs/Certificates.md b/frontend/src/locale/src/HelpDoc/cs/Certificates.md new file mode 100644 index 00000000..78e67f31 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/cs/Certificates.md @@ -0,0 +1,32 @@ +## Pomoc s certifikáty + +### Certifikát HTTP + +Certifikát ověřený prostřednictvím protokolu HTTP znamená, že servery Let's Encrypt se +pokusí připojit k vašim doménám přes protokol HTTP (nikoli HTTPS!) a v případě úspěchu +vydají váš certifikát. + +Pro tuto metodu budete muset mít pro své domény vytvořeného _Proxy Host_, který +je přístupný přes HTTP a směruje na tuto instalaci Nginx. Po vydání certifikátu +můžete změnit _Proxy Host_ tak, aby tento certifikát používal i pro HTTPS +připojení. _Proxy Host_ však bude stále potřeba nakonfigurovat pro přístup přes HTTP, +aby se certifikát mohl obnovit. + +Tento proces _nepodporuje_ domény se zástupnými znaky. + +### Certifikát DNS + +Certifikát ověřený DNS vyžaduje použití pluginu DNS Provider. Tento DNS +Provider se použije na vytvoření dočasných záznamů ve vaší doméně a poté Let's +Encrypt ověří tyto záznamy, aby se ujistil, že jste vlastníkem, a pokud bude úspěšný, +vydá váš certifikát. + +Před požádáním o tento typ certifikátu není potřeba vytvořit _Proxy Host_. +Není také potřeba mít _Proxy Host_ nakonfigurovaný pro přístup HTTP. + +Tento proces _podporuje_ domény se zástupnými znaky. + +### Vlastní certifikát + +Tuto možnost použijte na nahrání vlastního SSL certifikátu, který vám poskytla vaše +certifikační autorita. diff --git a/frontend/src/locale/src/HelpDoc/cs/DeadHosts.md b/frontend/src/locale/src/HelpDoc/cs/DeadHosts.md new file mode 100644 index 00000000..61d4dcfa --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/cs/DeadHosts.md @@ -0,0 +1,10 @@ +## Co je to 404 Host? + +404 Host je jednoduše nastavení hostitele, které zobrazuje stránku 404. + +To může být užitečné, pokud je vaše doména uvedena ve vyhledávačích a chcete +poskytnout hezčí chybovou stránku nebo konkrétně oznámit vyhledávačům, že +stránky domény již neexistují. + +Další výhodou tohoto hostitele je sledování protokolů o návštěvách a +zobrazení odkazů. diff --git a/frontend/src/locale/src/HelpDoc/cs/ProxyHosts.md b/frontend/src/locale/src/HelpDoc/cs/ProxyHosts.md new file mode 100644 index 00000000..36376410 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/cs/ProxyHosts.md @@ -0,0 +1,7 @@ +## Co je proxy hostitel? + +Proxy hostitel je příchozí koncový bod pro webovou službu, kterou chcete přesměrovat. + +Poskytuje volitelné ukončení SSL pro vaši službu, která nemusí mít zabudovanou podporu SSL. + +Proxy hostitelé jsou nejběžnějším použitím pro Nginx Proxy Manager. diff --git a/frontend/src/locale/src/HelpDoc/cs/RedirectionHosts.md b/frontend/src/locale/src/HelpDoc/cs/RedirectionHosts.md new file mode 100644 index 00000000..ed261663 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/cs/RedirectionHosts.md @@ -0,0 +1,7 @@ +## Co je přesměrovací hostitel? + +Přesměrovací hostitel přesměruje požadavky z příchozí domény a přesměruje +návštěvníka na jinou doménu. + +Nejčastějším důvodem pro použití tohoto typu hostitele je situace, kdy vaše webová stránka změní +doménu, ale stále máte odkazy ve vyhledávačích nebo referenční odkazy směřující na starou doménu. diff --git a/frontend/src/locale/src/HelpDoc/cs/Streams.md b/frontend/src/locale/src/HelpDoc/cs/Streams.md new file mode 100644 index 00000000..8dc3f4ee --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/cs/Streams.md @@ -0,0 +1,6 @@ +## Co je stream? + +Stream je relativně nová funkce pro Nginx, která slouží na přesměrování TCP/UDP +datového toku přímo do jiného počítače v síti. + +Pokud provozujete herní servery, FTP nebo SSH servery, tato funkce se vám může hodit. diff --git a/frontend/src/locale/src/HelpDoc/cs/index.ts b/frontend/src/locale/src/HelpDoc/cs/index.ts new file mode 100644 index 00000000..a9bb46ba --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/cs/index.ts @@ -0,0 +1,6 @@ +export * as AccessLists from "./AccessLists.md"; +export * as Certificates from "./Certificates.md"; +export * as DeadHosts from "./DeadHosts.md"; +export * as ProxyHosts from "./ProxyHosts.md"; +export * as RedirectionHosts from "./RedirectionHosts.md"; +export * as Streams from "./Streams.md"; diff --git a/frontend/src/locale/src/HelpDoc/index.ts b/frontend/src/locale/src/HelpDoc/index.ts index 4b027dde..bba013d5 100644 --- a/frontend/src/locale/src/HelpDoc/index.ts +++ b/frontend/src/locale/src/HelpDoc/index.ts @@ -13,12 +13,13 @@ import * as nl from "./nl/index"; import * as pl from "./pl/index"; import * as ru from "./ru/index"; import * as sk from "./sk/index"; +import * as cs from "./cs/index"; import * as vi from "./vi/index"; import * as zh from "./zh/index"; import * as tr from "./tr/index"; import * as hu from "./hu/index"; -const items: any = { en, de, pt, es, ja, sk, zh, pl, ru, it, vi, nl, bg, ko, ga, id, fr, tr, hu }; +const items: any = { en, de, pt, es, ja, sk, cs, zh, pl, ru, it, vi, nl, bg, ko, ga, id, fr, tr, hu }; const fallbackLang = "en"; diff --git a/frontend/src/locale/src/cs.json b/frontend/src/locale/src/cs.json new file mode 100644 index 00000000..cd86b678 --- /dev/null +++ b/frontend/src/locale/src/cs.json @@ -0,0 +1,770 @@ +{ + "2fa.backup-codes-remaining": { + "defaultMessage": "Počet zbývajících záložních kódů: {count}" + }, + "2fa.backup-warning": { + "defaultMessage": "Tyto záložní kódy si uložte na bezpečném místě. Každý kód lze použít pouze jednou." + }, + "2fa.disable": { + "defaultMessage": "Vypnout dvoufaktorové ověřování" + }, + "2fa.disable-confirm": { + "defaultMessage": "Vypnout 2FA" + }, + "2fa.disable-warning": { + "defaultMessage": "Vypnutím dvoufaktorového ověřování snížíte bezpečnost svého účtu." + }, + "2fa.disabled": { + "defaultMessage": "Vypnuto" + }, + "2fa.done": { + "defaultMessage": "Uložil jsem si své záložní kódy." + }, + "2fa.enable": { + "defaultMessage": "Zapnout dvoufaktorové ověřování" + }, + "2fa.enabled": { + "defaultMessage": "Zapnuto" + }, + "2fa.enter-code": { + "defaultMessage": "Zadejte ověřovací kód" + }, + "2fa.enter-code-disable": { + "defaultMessage": "Zadejte ověřovací kód pro vypnutí" + }, + "2fa.regenerate": { + "defaultMessage": "Znovu vytvořit" + }, + "2fa.regenerate-backup": { + "defaultMessage": "Znovu vytvořit záložní kódy" + }, + "2fa.regenerate-instructions": { + "defaultMessage": "Zadejte ověřovací kód pro vytvoření nových záložních kódů. Vaše staré kódy budou neplatné." + }, + "2fa.secret-key": { + "defaultMessage": "Tajný klíč" + }, + "2fa.setup-instructions": { + "defaultMessage": "Naskenujte tento QR kód pomocí své ověřovací aplikace nebo zadejte tajný klíč ručně." + }, + "2fa.status": { + "defaultMessage": "Stav" + }, + "2fa.title": { + "defaultMessage": "Dvoufaktorové ověření" + }, + "2fa.verify-enable": { + "defaultMessage": "Ověřit a zapnout" + }, + "access-list": { + "defaultMessage": "seznam přístupů" + }, + "access-list.access-count": { + "defaultMessage": "{count} {count, plural, one {pravidlo} few {pravidla} other {pravidel}}" + }, + "access-list.auth-count": { + "defaultMessage": "{count} {count, plural, one {uživatel} few {uživatelé} other {uživatelů}}" + }, + "access-list.help-rules-last": { + "defaultMessage": "Když existuje alespoň jedno pravidlo, toto pravidlo „zamítnout vše“ bude přidáno jako poslední" + }, + "access-list.help.rules-order": { + "defaultMessage": "Upozornění: pravidla povolit a zamítnout budou uplatňována v pořadí, v jakém jsou definována." + }, + "access-list.pass-auth": { + "defaultMessage": "Odeslat ověření na Upstream" + }, + "access-list.public": { + "defaultMessage": "Veřejně přístupné" + }, + "access-list.public.subtitle": { + "defaultMessage": "Není potřeba základní ověření" + }, + "access-list.rule-source.placeholder": { + "defaultMessage": "192.168.1.100 nebo 192.168.1.0/24 nebo 2001:0db8::/32" + }, + "access-list.satisfy-any": { + "defaultMessage": "Splnit kterékoliv" + }, + "access-list.subtitle": { + "defaultMessage": "{users} {users, plural, one {uživatel} few {uživatelé} other {uživatelů}}, {rules} {rules, plural, one {pravidlo} few {pravidla} other {pravidel}} - Vytvořeno: {date}" + }, + "access-lists": { + "defaultMessage": "Seznamy přístupů" + }, + "action.add": { + "defaultMessage": "Přidat" + }, + "action.add-location": { + "defaultMessage": "Přidat umístění" + }, + "action.allow": { + "defaultMessage": "Povolit" + }, + "action.close": { + "defaultMessage": "Zavřít" + }, + "action.delete": { + "defaultMessage": "Smazat" + }, + "action.deny": { + "defaultMessage": "Zamítnout" + }, + "action.disable": { + "defaultMessage": "Deaktivovat" + }, + "action.download": { + "defaultMessage": "Stáhnout" + }, + "action.edit": { + "defaultMessage": "Upravit" + }, + "action.enable": { + "defaultMessage": "Aktivovat" + }, + "action.permissions": { + "defaultMessage": "Oprávnění" + }, + "action.renew": { + "defaultMessage": "Obnovit" + }, + "action.view-details": { + "defaultMessage": "Zobrazit podrobnosti" + }, + "auditlogs": { + "defaultMessage": "Záznamy auditu" + }, + "auto": { + "defaultMessage": "Automaticky" + }, + "cancel": { + "defaultMessage": "Zrušit" + }, + "certificate": { + "defaultMessage": "certifikát" + }, + "certificate.custom-certificate": { + "defaultMessage": "Certifikát" + }, + "certificate.custom-certificate-key": { + "defaultMessage": "Klíč certifikátu" + }, + "certificate.custom-intermediate": { + "defaultMessage": "Zprostředkovatelský certifikát" + }, + "certificate.in-use": { + "defaultMessage": "Používá se" + }, + "certificate.none.subtitle": { + "defaultMessage": "Není přiřazen žádný certifikát" + }, + "certificate.none.subtitle.for-http": { + "defaultMessage": "Tento hostitel nebude používat HTTPS" + }, + "certificate.none.title": { + "defaultMessage": "Žádný" + }, + "certificate.not-in-use": { + "defaultMessage": "Nepoužívá se" + }, + "certificate.renew": { + "defaultMessage": "Obnovit certifikát" + }, + "certificates": { + "defaultMessage": "Certifikáty" + }, + "certificates.custom": { + "defaultMessage": "Vlastní certifikát" + }, + "certificates.custom.warning": { + "defaultMessage": "Soubory klíčů chráněné heslem nejsou podporovány." + }, + "certificates.dns.credentials": { + "defaultMessage": "Obsah souboru s přihlašovacími údaji" + }, + "certificates.dns.credentials-note": { + "defaultMessage": "Tento doplněk vyžaduje konfigurační soubor obsahující API token nebo jiné přihlašovací údaje vašeho poskytovatele" + }, + "certificates.dns.credentials-warning": { + "defaultMessage": "Tyto údaje budou uloženy v databázi a v souboru jako obyčejný text!" + }, + "certificates.dns.propagation-seconds": { + "defaultMessage": "Propagace v sekundách" + }, + "certificates.dns.propagation-seconds-note": { + "defaultMessage": "Nechte prázdné pro výchozí hodnotu doplňku. Počet sekund, po které se čeká na propagaci DNS." + }, + "certificates.dns.provider": { + "defaultMessage": "DNS poskytovatel" + }, + "certificates.dns.provider.placeholder": { + "defaultMessage": "Vyberte poskytovatele..." + }, + "certificates.dns.warning": { + "defaultMessage": "Tato sekce vyžaduje znalost Certbotu a jeho DNS doplňků. Prosím, podívejte se do dokumentace příslušného doplňku." + }, + "certificates.http.reachability-404": { + "defaultMessage": "Na této doméně byl nalezen server, ale nezdá se, že jde o Nginx Proxy Manager. Ujistěte se, že vaše doména směřuje na IP, kde běží vaše instance NPM." + }, + "certificates.http.reachability-failed-to-check": { + "defaultMessage": "Nepodařilo se ověřit dostupnost kvůli chybě komunikace se službou site24x7.com." + }, + "certificates.http.reachability-not-resolved": { + "defaultMessage": "Na této doméně není dostupný žádný server. Ujistěte se, že doména existuje a směřuje na IP adresu s NPM a pokud je to potřeba, port 80 je přesměrován ve vašem routeru." + }, + "certificates.http.reachability-ok": { + "defaultMessage": "Váš server je dostupný a vytvoření certifikátu by mělo být možné." + }, + "certificates.http.reachability-other": { + "defaultMessage": "Na této doméně byl nalezen server, ale vrátil neočekávaný stavový kód {code}. Je to NPM server? Ujistěte se prosím, že doména směřuje na IP, kde běží vaše instance NPM." + }, + "certificates.http.reachability-wrong-data": { + "defaultMessage": "Na této doméně byl nalezen server, ale vrátil neočekávaná data. Je to NPM server? Ujistěte se, že doména směřuje na IP, kde běží vaše instance NPM." + }, + "certificates.http.test-results": { + "defaultMessage": "Výsledky testu" + }, + "certificates.http.warning": { + "defaultMessage": "Tyto domény musí být již nakonfigurovány tak, aby směřovaly na tuto instalaci." + }, + "certificates.key-type": { + "defaultMessage": "Typ klíče" + }, + "certificates.key-type-description": { + "defaultMessage": "RSA je široce kompatibilní, ECDSA je rychlejší a bezpečnější, ale nemusí být podporován staršími systémy" + }, + "certificates.key-type-ecdsa": { + "defaultMessage": "ECDSA 256" + }, + "certificates.key-type-rsa": { + "defaultMessage": "RSA 2048" + }, + "certificates.request.subtitle": { + "defaultMessage": "pomocí Let's Encrypt" + }, + "certificates.request.title": { + "defaultMessage": "Vyžádat nový certifikát" + }, + "column.access": { + "defaultMessage": "Přístup" + }, + "column.authorization": { + "defaultMessage": "Autorizace" + }, + "column.authorizations": { + "defaultMessage": "Autorizace" + }, + "column.custom-locations": { + "defaultMessage": "Vlastní umístění" + }, + "column.destination": { + "defaultMessage": "Cíl" + }, + "column.details": { + "defaultMessage": "Podrobnosti" + }, + "column.email": { + "defaultMessage": "Email" + }, + "column.event": { + "defaultMessage": "Událost" + }, + "column.expires": { + "defaultMessage": "Platnost do" + }, + "column.http-code": { + "defaultMessage": "Přístup" + }, + "column.incoming-port": { + "defaultMessage": "Vstupní port" + }, + "column.name": { + "defaultMessage": "Název" + }, + "column.protocol": { + "defaultMessage": "Protokol" + }, + "column.provider": { + "defaultMessage": "Poskytovatel" + }, + "column.roles": { + "defaultMessage": "Role" + }, + "column.rules": { + "defaultMessage": "Pravidla" + }, + "column.satisfy": { + "defaultMessage": "Splnit" + }, + "column.satisfy-all": { + "defaultMessage": "Všechny" + }, + "column.satisfy-any": { + "defaultMessage": "Kterékoliv" + }, + "column.scheme": { + "defaultMessage": "Schéma" + }, + "column.source": { + "defaultMessage": "Zdroj" + }, + "column.ssl": { + "defaultMessage": "SSL" + }, + "column.status": { + "defaultMessage": "Stav" + }, + "created-on": { + "defaultMessage": "Vytvořeno: {date}" + }, + "dashboard": { + "defaultMessage": "Panel" + }, + "dead-host": { + "defaultMessage": "404 hostitel" + }, + "dead-hosts": { + "defaultMessage": "404 Hostitelé" + }, + "dead-hosts.count": { + "defaultMessage": "{count} {count, plural, one {404 hostitel} few {404 hostitelé} other {404 hostitelů}}" + }, + "disabled": { + "defaultMessage": "Deaktivováno" + }, + "domain-names": { + "defaultMessage": "Doménová jména" + }, + "domain-names.max": { + "defaultMessage": "Maximálně {count} doménových jmen" + }, + "domain-names.placeholder": { + "defaultMessage": "Začněte psát pro přidání domény..." + }, + "domain-names.wildcards-not-permitted": { + "defaultMessage": "Wildcards nejsou pro tento typ povoleny" + }, + "domain-names.wildcards-not-supported": { + "defaultMessage": "Wildcards nejsou podporovány pro tuto certifikační autoritu" + }, + "domains.force-ssl": { + "defaultMessage": "Vynutit SSL" + }, + "domains.hsts-enabled": { + "defaultMessage": "HSTS povoleno" + }, + "domains.hsts-subdomains": { + "defaultMessage": "HSTS pro subdomény" + }, + "domains.http2-support": { + "defaultMessage": "Podpora HTTP/2" + }, + "domains.use-dns": { + "defaultMessage": "Použít DNS výzvu" + }, + "email-address": { + "defaultMessage": "Emailová adresa" + }, + "empty-search": { + "defaultMessage": "Nebyly nalezeny žádné výsledky" + }, + "empty-subtitle": { + "defaultMessage": "Proč nevytvoříte nějaký?" + }, + "enabled": { + "defaultMessage": "Aktivováno" + }, + "error.access.at-least-one": { + "defaultMessage": "Je vyžadována alespoň jedna autorizace nebo jedno přístupové pravidlo" + }, + "error.access.duplicate-usernames": { + "defaultMessage": "Uživatelská jména pro autorizaci musí být jedinečná" + }, + "error.invalid-auth": { + "defaultMessage": "Neplatný email nebo heslo" + }, + "error.invalid-domain": { + "defaultMessage": "Neplatná doména: {domain}" + }, + "error.invalid-email": { + "defaultMessage": "Neplatná emailová adresa" + }, + "error.max-character-length": { + "defaultMessage": "Maximální délka je {max} znak{max, plural, one {} few {y} other {ů}}" + }, + "error.max-domains": { + "defaultMessage": "Příliš mnoho domén, maximum je {max}" + }, + "error.maximum": { + "defaultMessage": "Maximum je {max}" + }, + "error.min-character-length": { + "defaultMessage": "Minimální délka je {min} znak{min, plural, one {} few {y} other {ů}}" + }, + "error.minimum": { + "defaultMessage": "Minimum je {min}" + }, + "error.passwords-must-match": { + "defaultMessage": "Hesla se musí shodovat" + }, + "error.required": { + "defaultMessage": "Toto pole je povinné" + }, + "expires.on": { + "defaultMessage": "Platnost do: {date}" + }, + "footer.github-fork": { + "defaultMessage": "Forkněte mě na GitHubu" + }, + "host.flags.block-exploits": { + "defaultMessage": "Blokovat běžné exploity" + }, + "host.flags.cache-assets": { + "defaultMessage": "Uložit zdroje do mezipaměti" + }, + "host.flags.preserve-path": { + "defaultMessage": "Zachovat cestu" + }, + "host.flags.protocols": { + "defaultMessage": "Protokoly" + }, + "host.flags.websockets-upgrade": { + "defaultMessage": "Podpora WebSockets" + }, + "host.forward-port": { + "defaultMessage": "Port přesměrování" + }, + "host.forward-scheme": { + "defaultMessage": "Schéma" + }, + "hosts": { + "defaultMessage": "Hostitelé" + }, + "http-only": { + "defaultMessage": "Pouze HTTP" + }, + "lets-encrypt": { + "defaultMessage": "Let's Encrypt" + }, + "lets-encrypt-via-dns": { + "defaultMessage": "Let's Encrypt přes DNS" + }, + "lets-encrypt-via-http": { + "defaultMessage": "Let's Encrypt přes HTTP" + }, + "loading": { + "defaultMessage": "Načítá se…" + }, + "login.2fa-code": { + "defaultMessage": "Ověřovací kód" + }, + "login.2fa-code-placeholder": { + "defaultMessage": "Vložit kód" + }, + "login.2fa-description": { + "defaultMessage": "Vložte kód z vaší ověřovací aplikace" + }, + "login.2fa-title": { + "defaultMessage": "Dvoufaktorové ověření" + }, + "login.2fa-verify": { + "defaultMessage": "Ověřit" + }, + "login.title": { + "defaultMessage": "Přihlaste se ke svému účtu" + }, + "nginx-config.label": { + "defaultMessage": "Vlastní Nginx konfigurace" + }, + "nginx-config.placeholder": { + "defaultMessage": "# Zadejte vlastní Nginx konfiguraci na vlastní riziko!" + }, + "no-permission-error": { + "defaultMessage": "Nemáte oprávnění k zobrazení tohoto obsahu." + }, + "notfound.action": { + "defaultMessage": "Zpět na hlavní stránku" + }, + "notfound.content": { + "defaultMessage": "Omlouváme se, stránka, kterou hledáte, nebyla nalezena" + }, + "notfound.title": { + "defaultMessage": "Ups… Našli jste chybovou stránku" + }, + "notification.error": { + "defaultMessage": "Chyba" + }, + "notification.object-deleted": { + "defaultMessage": "{object} byl odstraněn" + }, + "notification.object-disabled": { + "defaultMessage": "{object} byl deaktivován" + }, + "notification.object-enabled": { + "defaultMessage": "{object} byl aktivován" + }, + "notification.object-renewed": { + "defaultMessage": "{object} byl obnoven" + }, + "notification.object-saved": { + "defaultMessage": "{object} byl uložen" + }, + "notification.success": { + "defaultMessage": "Úspěch" + }, + "object.actions-title": { + "defaultMessage": "{object} #{id}" + }, + "object.add": { + "defaultMessage": "Přidat {object}" + }, + "object.delete": { + "defaultMessage": "Smazat {object}" + }, + "object.delete.content": { + "defaultMessage": "Opravdu chcete smazat tento {object}?" + }, + "object.edit": { + "defaultMessage": "Upravit {object}" + }, + "object.empty": { + "defaultMessage": "Nejsou {objects}" + }, + "object.event.created": { + "defaultMessage": "Vytvořen {object}" + }, + "object.event.deleted": { + "defaultMessage": "Smazán {object}" + }, + "object.event.disabled": { + "defaultMessage": "Deaktivován {object}" + }, + "object.event.enabled": { + "defaultMessage": "Aktivován {object}" + }, + "object.event.renewed": { + "defaultMessage": "Obnoven {object}" + }, + "object.event.updated": { + "defaultMessage": "Aktualizován {object}" + }, + "offline": { + "defaultMessage": "Offline" + }, + "online": { + "defaultMessage": "Online" + }, + "options": { + "defaultMessage": "Možnosti" + }, + "password": { + "defaultMessage": "Heslo" + }, + "password.generate": { + "defaultMessage": "Vygenerovat náhodné heslo" + }, + "password.hide": { + "defaultMessage": "Skrýt heslo" + }, + "password.show": { + "defaultMessage": "Zobrazit heslo" + }, + "permissions.hidden": { + "defaultMessage": "Skryté" + }, + "permissions.manage": { + "defaultMessage": "Spravovat" + }, + "permissions.view": { + "defaultMessage": "Pouze pro zobrazení" + }, + "permissions.visibility.all": { + "defaultMessage": "Všechny položky" + }, + "permissions.visibility.title": { + "defaultMessage": "Viditelnost položky" + }, + "permissions.visibility.user": { + "defaultMessage": "Pouze vytvořené položky" + }, + "proxy-host": { + "defaultMessage": "proxy hostitele" + }, + "proxy-host.forward-host": { + "defaultMessage": "Cílový název hostitele / IP" + }, + "proxy-hosts": { + "defaultMessage": "Proxy hostitelé" + }, + "proxy-hosts.count": { + "defaultMessage": "{count} {count, plural, one {proxy hostitel} few {proxy hostitelé} other {proxy hostitelů}}" + }, + "public": { + "defaultMessage": "Veřejné" + }, + "redirection-host": { + "defaultMessage": "přesměrovacího hostitele" + }, + "redirection-host.forward-domain": { + "defaultMessage": "Cílová doména" + }, + "redirection-host.forward-http-code": { + "defaultMessage": "HTTP kód" + }, + "redirection-hosts": { + "defaultMessage": "Přesměrovací hostitelé" + }, + "redirection-hosts.count": { + "defaultMessage": "{count} {count, plural, one {přesměrovací hostitel} few {přesměrovací hostitelé} other {přesměrovacích hostitelů}}" + }, + "redirection-hosts.http-code.300": { + "defaultMessage": "300 Více možností" + }, + "redirection-hosts.http-code.301": { + "defaultMessage": "301 Trvale přesunuto" + }, + "redirection-hosts.http-code.302": { + "defaultMessage": "302 Dočasně přesunuto" + }, + "redirection-hosts.http-code.303": { + "defaultMessage": "303 Podívat se na jiné" + }, + "redirection-hosts.http-code.307": { + "defaultMessage": "307 Dočasné přesměrování" + }, + "redirection-hosts.http-code.308": { + "defaultMessage": "308 Trvalé přesměrování" + }, + "role.admin": { + "defaultMessage": "Administrátor" + }, + "role.standard-user": { + "defaultMessage": "Běžný uživatel" + }, + "save": { + "defaultMessage": "Uložit" + }, + "setting": { + "defaultMessage": "Nastavení" + }, + "settings": { + "defaultMessage": "Nastavení" + }, + "settings.default-site": { + "defaultMessage": "Výchozí stránka" + }, + "settings.default-site.404": { + "defaultMessage": "Stránka 404" + }, + "settings.default-site.444": { + "defaultMessage": "Bez odpovědi (444)" + }, + "settings.default-site.congratulations": { + "defaultMessage": "Gratulační stránka" + }, + "settings.default-site.description": { + "defaultMessage": "Co zobrazit, když Nginx zachytí neznámého hostitele" + }, + "settings.default-site.html": { + "defaultMessage": "Vlastní HTML" + }, + "settings.default-site.html.placeholder": { + "defaultMessage": "" + }, + "settings.default-site.redirect": { + "defaultMessage": "Přesměrovat" + }, + "setup.preamble": { + "defaultMessage": "Začněte vytvořením administrátorského účtu." + }, + "setup.title": { + "defaultMessage": "Vítejte!" + }, + "sign-in": { + "defaultMessage": "Přihlásit se" + }, + "ssl-certificate": { + "defaultMessage": "SSL certifikát" + }, + "stream": { + "defaultMessage": "stream" + }, + "stream.forward-host": { + "defaultMessage": "Cílový hostitel" + }, + "stream.forward-host.placeholder": { + "defaultMessage": "napriklad.cz nebo 10.0.0.1 nebo 2001:db8:3333:4444:5555:6666:7777:8888" + }, + "stream.incoming-port": { + "defaultMessage": "Vstupní port" + }, + "streams": { + "defaultMessage": "Streamy" + }, + "streams.count": { + "defaultMessage": "{count} {count, plural, one {stream} few {streamy} other {streamů}}" + }, + "streams.tcp": { + "defaultMessage": "TCP" + }, + "streams.udp": { + "defaultMessage": "UDP" + }, + "test": { + "defaultMessage": "Test" + }, + "update-available": { + "defaultMessage": "Dostupná aktualizace: {latestVersion}" + }, + "user": { + "defaultMessage": "uživatele" + }, + "user.change-password": { + "defaultMessage": "Změnit heslo" + }, + "user.confirm-password": { + "defaultMessage": "Potvrdit heslo" + }, + "user.current-password": { + "defaultMessage": "Aktuální heslo" + }, + "user.edit-profile": { + "defaultMessage": "Upravit profil" + }, + "user.full-name": { + "defaultMessage": "Celé jméno" + }, + "user.login-as": { + "defaultMessage": "Přihlásit se jako {name}" + }, + "user.logout": { + "defaultMessage": "Odhlásit se" + }, + "user.new-password": { + "defaultMessage": "Nové heslo" + }, + "user.nickname": { + "defaultMessage": "Přezdívka" + }, + "user.set-password": { + "defaultMessage": "Nastavit heslo" + }, + "user.set-permissions": { + "defaultMessage": "Nastavit oprávnění pro {name}" + }, + "user.switch-dark": { + "defaultMessage": "Přepnout na tmavý režim" + }, + "user.switch-light": { + "defaultMessage": "Přepnout na světlý režim" + }, + "user.two-factor": { + "defaultMessage": "Dvoufaktorové ověření" + }, + "username": { + "defaultMessage": "Uživatelské jméno" + }, + "users": { + "defaultMessage": "Uživatelé" + } +} diff --git a/frontend/src/locale/src/en.json b/frontend/src/locale/src/en.json index ae02605e..bb00ac33 100644 --- a/frontend/src/locale/src/en.json +++ b/frontend/src/locale/src/en.json @@ -347,6 +347,9 @@ "domain-names.wildcards-not-supported": { "defaultMessage": "Wildcards not supported for this CA" }, + "domains.advanced": { + "defaultMessage": "Advanced" + }, "domains.force-ssl": { "defaultMessage": "Force SSL" }, @@ -359,6 +362,9 @@ "domains.http2-support": { "defaultMessage": "HTTP/2 Support" }, + "domains.trust-forwarded-proto": { + "defaultMessage": "Trust Upstream Forwarded Proto Headers" + }, "domains.use-dns": { "defaultMessage": "Use DNS Challenge" }, diff --git a/frontend/src/locale/src/lang-list.json b/frontend/src/locale/src/lang-list.json index a37dedf1..408d06eb 100644 --- a/frontend/src/locale/src/lang-list.json +++ b/frontend/src/locale/src/lang-list.json @@ -29,6 +29,9 @@ "locale-sk-SK": { "defaultMessage": "Slovenčina" }, + "locale-cs-CZ": { + "defaultMessage": "Čeština" + }, "locale-zh-CN": { "defaultMessage": "中文" }, diff --git a/frontend/src/locale/src/sk.json b/frontend/src/locale/src/sk.json index 6431643f..8d48cf81 100644 --- a/frontend/src/locale/src/sk.json +++ b/frontend/src/locale/src/sk.json @@ -1,4 +1,61 @@ { + "2fa.backup-codes-remaining": { + "defaultMessage": "Počet zostávajúcich záložných kódov: {count}" + }, + "2fa.backup-warning": { + "defaultMessage": "Tieto záložné kódy si uložte na bezpečnom mieste. Každý kód je možné použiť len raz." + }, + "2fa.disable": { + "defaultMessage": "Vypnúť dvojfaktorové overovanie" + }, + "2fa.disable-confirm": { + "defaultMessage": "Vypnúť 2FA" + }, + "2fa.disable-warning": { + "defaultMessage": "Vypnutím dvojfaktorového overovania sa zníži bezpečnosť vášho účtu." + }, + "2fa.disabled": { + "defaultMessage": "Vypnuté" + }, + "2fa.done": { + "defaultMessage": "Uložil som si svoje záložné kódy." + }, + "2fa.enable": { + "defaultMessage": "Zapnúť dvojfaktorové overovanie" + }, + "2fa.enabled": { + "defaultMessage": "Zapnuté" + }, + "2fa.enter-code": { + "defaultMessage": "Zadajte overovací kód" + }, + "2fa.enter-code-disable": { + "defaultMessage": "Zadajte overovací kód na vypnutie" + }, + "2fa.regenerate": { + "defaultMessage": "Znova vytvoriť" + }, + "2fa.regenerate-backup": { + "defaultMessage": "Znova vytvoriť záložné kódy" + }, + "2fa.regenerate-instructions": { + "defaultMessage": "Zadajte overovací kód, aby sa vytvorili nové záložné kódy. Vaše staré kódy budú neplatné." + }, + "2fa.secret-key": { + "defaultMessage": "Tajný kľúč" + }, + "2fa.setup-instructions": { + "defaultMessage": "Naskenujte tento QR kód pomocou svojej overovacej aplikácie alebo zadajte tajný kľúč ručne." + }, + "2fa.status": { + "defaultMessage": "Stav" + }, + "2fa.title": { + "defaultMessage": "Dvojfaktorové overenie" + }, + "2fa.verify-enable": { + "defaultMessage": "Overiť a zapnúť" + }, "access-list": { "defaultMessage": "zoznam prístupov" }, @@ -23,6 +80,9 @@ "access-list.public.subtitle": { "defaultMessage": "Nie je potrebné základné overenie" }, + "access-list.rule-source.placeholder": { + "defaultMessage": "192.168.1.100 alebo 192.168.1.0/24 alebo 2001:0db8::/32" + }, "access-list.satisfy-any": { "defaultMessage": "Splniť ktorékoľvek" }, @@ -38,12 +98,18 @@ "action.add-location": { "defaultMessage": "Pridať umiestnenie" }, + "action.allow": { + "defaultMessage": "Povoliť" + }, "action.close": { "defaultMessage": "Zavrieť" }, "action.delete": { "defaultMessage": "Vymazať" }, + "action.deny": { + "defaultMessage": "Zamietnuť" + }, "action.disable": { "defaultMessage": "Deaktivovať" }, @@ -68,11 +134,14 @@ "auditlogs": { "defaultMessage": "Záznamy auditu" }, + "auto": { + "defaultMessage": "Automaticky" + }, "cancel": { "defaultMessage": "Zrušiť" }, "certificate": { - "defaultMessage": "Certifikát" + "defaultMessage": "certifikát" }, "certificate.custom-certificate": { "defaultMessage": "Certifikát" @@ -128,6 +197,9 @@ "certificates.dns.provider": { "defaultMessage": "DNS poskytovateľ" }, + "certificates.dns.provider.placeholder": { + "defaultMessage": "Vyberte poskytovateľa..." + }, "certificates.dns.warning": { "defaultMessage": "Táto sekcia vyžaduje znalosť Certbotu a jeho DNS doplnkov. Prosím, pozrite si dokumentáciu príslušného doplnku." }, @@ -249,7 +321,7 @@ "defaultMessage": "Panel" }, "dead-host": { - "defaultMessage": "404 Hostiteľ" + "defaultMessage": "404 hostiteľa" }, "dead-hosts": { "defaultMessage": "404 Hostitelia" @@ -383,6 +455,21 @@ "loading": { "defaultMessage": "Načítava sa…" }, + "login.2fa-code": { + "defaultMessage": "Overovací kód" + }, + "login.2fa-code-placeholder": { + "defaultMessage": "Vložiť kód" + }, + "login.2fa-description": { + "defaultMessage": "Vložte kód z vašej overovacej aplikácie" + }, + "login.2fa-title": { + "defaultMessage": "Dvoj-faktorové overenie" + }, + "login.2fa-verify": { + "defaultMessage": "Overiť" + }, "login.title": { "defaultMessage": "Prihláste sa do svojho účtu" }, @@ -420,7 +507,7 @@ "defaultMessage": "{object} bol obnovený" }, "notification.object-saved": { - "defaultMessage": "{object} bol uložené" + "defaultMessage": "{object} bol uložený" }, "notification.success": { "defaultMessage": "Úspech" @@ -441,7 +528,7 @@ "defaultMessage": "Upraviť {object}" }, "object.empty": { - "defaultMessage": "Nie sú žiadne/y {objects}" + "defaultMessage": "Nie sú {objects}" }, "object.event.created": { "defaultMessage": "Vytvorený {object}" @@ -501,7 +588,7 @@ "defaultMessage": "Len vytvorené položky" }, "proxy-host": { - "defaultMessage": "Proxy hostiteľa" + "defaultMessage": "proxy hostiteľa" }, "proxy-host.forward-host": { "defaultMessage": "Cieľový názov hostiteľa / IP" @@ -530,6 +617,24 @@ "redirection-hosts.count": { "defaultMessage": "{count} {count, plural, one {presmerovací hostiteľ} few {presmerovací hostitelia} other {presmerovacích hostiteľov}}" }, + "redirection-hosts.http-code.300": { + "defaultMessage": "300 Viacero možností" + }, + "redirection-hosts.http-code.301": { + "defaultMessage": "301 Trvalo presunuté" + }, + "redirection-hosts.http-code.302": { + "defaultMessage": "302 Dočasne presunuté" + }, + "redirection-hosts.http-code.303": { + "defaultMessage": "303 Pozrieť iné" + }, + "redirection-hosts.http-code.307": { + "defaultMessage": "307 Dočasné presmerovanie" + }, + "redirection-hosts.http-code.308": { + "defaultMessage": "308 Trvalé presmerovanie" + }, "role.admin": { "defaultMessage": "Administrátor" }, @@ -582,11 +687,14 @@ "defaultMessage": "SSL certifikát" }, "stream": { - "defaultMessage": "Stream" + "defaultMessage": "stream" }, "stream.forward-host": { "defaultMessage": "Cieľový hostiteľ" }, + "stream.forward-host.placeholder": { + "defaultMessage": "napriklad.sk alebo 10.0.0.1 alebo 2001:db8:3333:4444:5555:6666:7777:8888" + }, "stream.incoming-port": { "defaultMessage": "Vstupný port" }, @@ -605,6 +713,9 @@ "test": { "defaultMessage": "Test" }, + "update-available": { + "defaultMessage": "Dostupná aktualizácia: {latestVersion}" + }, "user": { "defaultMessage": "používateľa" }, @@ -647,6 +758,9 @@ "user.switch-light": { "defaultMessage": "Prepnúť na svetlý režim" }, + "user.two-factor": { + "defaultMessage": "Dvojfakt. overenie" + }, "username": { "defaultMessage": "Používateľské meno" }, diff --git a/frontend/src/locale/src/zh.json b/frontend/src/locale/src/zh.json index d40ea39d..72494bb6 100644 --- a/frontend/src/locale/src/zh.json +++ b/frontend/src/locale/src/zh.json @@ -275,6 +275,9 @@ "domain-names.wildcards-not-supported": { "defaultMessage": "此 CA 不支持通配符" }, + "domains.advanced": { + "defaultMessage": "高级选项" + }, "domains.force-ssl": { "defaultMessage": "强制 SSL" }, @@ -287,6 +290,9 @@ "domains.http2-support": { "defaultMessage": "HTTP/2 支持" }, + "domains.trust-forwarded-proto": { + "defaultMessage": "信任上游代理传递的协议类型头" + }, "domains.use-dns": { "defaultMessage": "使用DNS验证" }, diff --git a/frontend/src/modals/ProxyHostModal.tsx b/frontend/src/modals/ProxyHostModal.tsx index ca322849..3227be51 100644 --- a/frontend/src/modals/ProxyHostModal.tsx +++ b/frontend/src/modals/ProxyHostModal.tsx @@ -88,6 +88,7 @@ const ProxyHostModal = EasyModal.create(({ id, visible, remove }: Props) => { http2Support: data?.http2Support || false, hstsEnabled: data?.hstsEnabled || false, hstsSubdomains: data?.hstsSubdomains || false, + trustForwardedProto: data?.trustForwardedProto || false, // Advanced tab advancedConfig: data?.advancedConfig || "", meta: data?.meta || {}, @@ -339,7 +340,7 @@ const ProxyHostModal = EasyModal.create(({ id, visible, remove }: Props) => { label="ssl-certificate" allowNew /> - +
diff --git a/frontend/yarn.lock b/frontend/yarn.lock index ecd07e5a..1720bee5 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -235,59 +235,59 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" -"@biomejs/biome@^2.3.14": - version "2.3.14" - resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-2.3.14.tgz#b879cd5e0495334d4db7c49d6f3cc95b67d2909c" - integrity sha512-QMT6QviX0WqXJCaiqVMiBUCr5WRQ1iFSjvOLoTk6auKukJMvnMzWucXpwZB0e8F00/1/BsS9DzcKgWH+CLqVuA== +"@biomejs/biome@^2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-2.4.2.tgz#91fea27398106f87fa81118577756d9e29fe8c74" + integrity sha512-vVE/FqLxNLbvYnFDYg3Xfrh1UdFhmPT5i+yPT9GE2nTUgI4rkqo5krw5wK19YHBd7aE7J6r91RRmb8RWwkjy6w== optionalDependencies: - "@biomejs/cli-darwin-arm64" "2.3.14" - "@biomejs/cli-darwin-x64" "2.3.14" - "@biomejs/cli-linux-arm64" "2.3.14" - "@biomejs/cli-linux-arm64-musl" "2.3.14" - "@biomejs/cli-linux-x64" "2.3.14" - "@biomejs/cli-linux-x64-musl" "2.3.14" - "@biomejs/cli-win32-arm64" "2.3.14" - "@biomejs/cli-win32-x64" "2.3.14" + "@biomejs/cli-darwin-arm64" "2.4.2" + "@biomejs/cli-darwin-x64" "2.4.2" + "@biomejs/cli-linux-arm64" "2.4.2" + "@biomejs/cli-linux-arm64-musl" "2.4.2" + "@biomejs/cli-linux-x64" "2.4.2" + "@biomejs/cli-linux-x64-musl" "2.4.2" + "@biomejs/cli-win32-arm64" "2.4.2" + "@biomejs/cli-win32-x64" "2.4.2" -"@biomejs/cli-darwin-arm64@2.3.14": - version "2.3.14" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.3.14.tgz#da942618e1dc2d19322bc11d5dacfe7d7616a502" - integrity sha512-UJGPpvWJMkLxSRtpCAKfKh41Q4JJXisvxZL8ChN1eNW3m/WlPFJ6EFDCE7YfUb4XS8ZFi3C1dFpxUJ0Ety5n+A== +"@biomejs/cli-darwin-arm64@2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.2.tgz#a748ec0a0d8f4ea559b4a3834e8981500caaa5fa" + integrity sha512-3pEcKCP/1POKyaZZhXcxFl3+d9njmeAihZ17k8lL/1vk+6e0Cbf0yPzKItFiT+5Yh6TQA4uKvnlqe0oVZwRxCA== -"@biomejs/cli-darwin-x64@2.3.14": - version "2.3.14" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.3.14.tgz#3ad06cce8ef6d2b935582011bd0cc3ca98a9554d" - integrity sha512-PNkLNQG6RLo8lG7QoWe/hhnMxJIt1tEimoXpGQjwS/dkdNiKBLPv4RpeQl8o3s1OKI3ZOR5XPiYtmbGGHAOnLA== +"@biomejs/cli-darwin-x64@2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.2.tgz#b825d247a7e582c00c9782524284bea2033a272c" + integrity sha512-P7hK1jLVny+0R9UwyGcECxO6sjETxfPyBm/1dmFjnDOHgdDPjPqozByunrwh4xPKld8sxOr5eAsSqal5uKgeBg== -"@biomejs/cli-linux-arm64-musl@2.3.14": - version "2.3.14" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.3.14.tgz#e92681273dc59ac57b75b72f1b64a67543e50f8c" - integrity sha512-LInRbXhYujtL3sH2TMCH/UBwJZsoGwfQjBrMfl84CD4hL/41C/EU5mldqf1yoFpsI0iPWuU83U+nB2TUUypWeg== +"@biomejs/cli-linux-arm64-musl@2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.2.tgz#9a2d15f525928f06d21fbc0eaea2e332be3ed5d9" + integrity sha512-/x04YK9+7erw6tYEcJv9WXoBHcULI/wMOvNdAyE9S3JStZZ9yJyV67sWAI+90UHuDo/BDhq0d96LDqGlSVv7WA== -"@biomejs/cli-linux-arm64@2.3.14": - version "2.3.14" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.3.14.tgz#bab43ee0a88ba15a6d59ec648a4b415d68d6eeb7" - integrity sha512-KT67FKfzIw6DNnUNdYlBg+eU24Go3n75GWK6NwU4+yJmDYFe9i/MjiI+U/iEzKvo0g7G7MZqoyrhIYuND2w8QQ== +"@biomejs/cli-linux-arm64@2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.2.tgz#0f7928a3253cdb10ebf5884db452d81d7a49ba30" + integrity sha512-DI3Mi7GT2zYNgUTDEbSjl3e1KhoP76OjQdm8JpvZYZWtVDRyLd3w8llSr2TWk1z+U3P44kUBWY3X7H9MD1/DGQ== -"@biomejs/cli-linux-x64-musl@2.3.14": - version "2.3.14" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.3.14.tgz#ee90f7110dafdedf4644e0a27ac242975dcd88d3" - integrity sha512-KQU7EkbBBuHPW3/rAcoiVmhlPtDSGOGRPv9js7qJVpYTzjQmVR+C9Rfcz+ti8YCH+zT1J52tuBybtP4IodjxZQ== +"@biomejs/cli-linux-x64-musl@2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.2.tgz#07c971451e62f6e147ec58b7acae345792d331b1" + integrity sha512-wbBmTkeAoAYbOQ33f6sfKG7pcRSydQiF+dTYOBjJsnXO2mWEOQHllKlC2YVnedqZFERp2WZhFUoO7TNRwnwEHQ== -"@biomejs/cli-linux-x64@2.3.14": - version "2.3.14" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-2.3.14.tgz#d152e61c6dc847836ebc741fb70fe305414aa7fe" - integrity sha512-ZsZzQsl9U+wxFrGGS4f6UxREUlgHwmEfu1IrXlgNFrNnd5Th6lIJr8KmSzu/+meSa9f4rzFrbEW9LBBA6ScoMA== +"@biomejs/cli-linux-x64@2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.2.tgz#0c7755fe8b5b2745d6afa8e14806591aefef52e3" + integrity sha512-GK2ErnrKpWFigYP68cXiCHK4RTL4IUWhK92AFS3U28X/nuAL5+hTuy6hyobc8JZRSt+upXt1nXChK+tuHHx4mA== -"@biomejs/cli-win32-arm64@2.3.14": - version "2.3.14" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.3.14.tgz#2c59e84f3d172bada2a1df94d6cf7e511c244a4e" - integrity sha512-+IKYkj/pUBbnRf1G1+RlyA3LWiDgra1xpS7H2g4BuOzzRbRB+hmlw0yFsLprHhbbt7jUzbzAbAjK/Pn0FDnh1A== +"@biomejs/cli-win32-arm64@2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.2.tgz#a25007d0eb8ac4bbf81fb0fd010a68ce38fd46d1" + integrity sha512-k2uqwLYrNNxnaoiW3RJxoMGnbKda8FuCmtYG3cOtVljs3CzWxaTR+AoXwKGHscC9thax9R4kOrtWqWN0+KdPTw== -"@biomejs/cli-win32-x64@2.3.14": - version "2.3.14" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-2.3.14.tgz#44405162f255fe153a5ff99379510c058bf7a1e8" - integrity sha512-oizCjdyQ3WJEswpb3Chdngeat56rIdSYK12JI3iI11Mt5T5EXcZ7WLuowzEaFPNJ3zmOQFliMN8QY1Pi+qsfdQ== +"@biomejs/cli-win32-x64@2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.2.tgz#7693a47973bd1c910a7ce3d7eb8133292f779646" + integrity sha512-9ma7C4g8Sq3cBlRJD2yrsHXB1mnnEBdpy7PhvFrylQWQb4PoyCmPucdX7frvsSBQuFtIiKCrolPl/8tCZrKvgQ== "@emotion/babel-plugin@^11.13.5": version "11.13.5" @@ -749,10 +749,10 @@ uncontrollable "^8.0.4" warning "^4.0.3" -"@rolldown/pluginutils@1.0.0-rc.2": - version "1.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz#10324e74cb3396cb7b616042ea7e9e6aa7d8d458" - integrity sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw== +"@rolldown/pluginutils@1.0.0-rc.3": + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz#8a88cc92a0f741befc7bc109cb1a4c6b9408e1c5" + integrity sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q== "@rollup/rollup-android-arm-eabi@4.50.0": version "4.50.0" @@ -908,10 +908,10 @@ dependencies: "@tanstack/query-devtools" "5.93.0" -"@tanstack/react-query@^5.90.20": - version "5.90.20" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.90.20.tgz#42bb7018bfedc72f216b6e9b4052c919063f350b" - integrity sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw== +"@tanstack/react-query@^5.90.21": + version "5.90.21" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.90.21.tgz#e0eb40831a76510be438109435b8807ef63ab1b9" + integrity sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg== dependencies: "@tanstack/query-core" "5.90.20" @@ -1111,10 +1111,10 @@ resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz" integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== -"@types/react@*", "@types/react@>=16.9.11", "@types/react@^19.2.10": - version "19.2.10" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.10.tgz#f3ea799e6b4cebad6dfd231c238fc9de7652e2d2" - integrity sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw== +"@types/react@*", "@types/react@>=16.9.11", "@types/react@^19.2.14": + version "19.2.14" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.14.tgz#39604929b5e3957e3a6fa0001dafb17c7af70bad" + integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w== dependencies: csstype "^3.2.2" @@ -1159,15 +1159,15 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== -"@vitejs/plugin-react@^5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-5.1.3.tgz#05eba092cc89a6ff89668d3f62258e2c5a8a9122" - integrity sha512-NVUnA6gQCl8jfoYqKqQU5Clv0aPw14KkZYCsX6T9Lfu9slI0LOU10OTwFHS/WmptsMMpshNd/1tuWsHQ2Uk+cg== +"@vitejs/plugin-react@^5.1.4": + version "5.1.4" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz#5b477e060bf612a7394c4febacc5de33a219b0e4" + integrity sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA== dependencies: "@babel/core" "^7.29.0" "@babel/plugin-transform-react-jsx-self" "^7.27.1" "@babel/plugin-transform-react-jsx-source" "^7.27.1" - "@rolldown/pluginutils" "1.0.0-rc.2" + "@rolldown/pluginutils" "1.0.0-rc.3" "@types/babel__core" "^7.20.5" react-refresh "^0.18.0" @@ -1383,10 +1383,10 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -country-flag-icons@^1.6.12: - version "1.6.12" - resolved "https://registry.yarnpkg.com/country-flag-icons/-/country-flag-icons-1.6.12.tgz#f32f9fd6f371bf3dc9389ed5cf85150b80b20c00" - integrity sha512-tWxbBylam6Fkkg0nu+112jmny4WomHXgmdTQFobs/+evTyizSc06bCp//HAh4W1i+g1m06uqlbPuyLC5mrimkQ== +country-flag-icons@^1.6.13: + version "1.6.13" + resolved "https://registry.yarnpkg.com/country-flag-icons/-/country-flag-icons-1.6.13.tgz#744de466baf5d8189942ba08fc57167f74037282" + integrity sha512-mR9GoTXtj3zAXoZXBkb3J4QvyDllFEPtEfZvHb9U23TAHYXfkJyP03pRtZiR0spxo6Ibja3R/hn6a68T4LHBuA== css.escape@^1.5.1: version "1.5.1" @@ -1472,12 +1472,7 @@ electron-to-chromium@^1.5.211: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.213.tgz" integrity sha512-xr9eRzSLNa4neDO0xVFrkXu3vyIzG4Ay08dApecw42Z1NbmCt+keEpXdvlYGVe0wtvY5dhW0Ay0lY0IOfsCg0Q== -entities@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -entities@^6.0.0: +entities@^6.0.0, entities@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz" integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== @@ -1632,15 +1627,15 @@ globrex@^0.1.2: resolved "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz" integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== -happy-dom@^20.5.0: - version "20.5.0" - resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-20.5.0.tgz#64899aad7272f7e02a728e231bc9c151b872a3a5" - integrity sha512-VQe+Q5CYiGOgcCERXhcfNsbnrN92FDEKciMH/x6LppU9dd0j4aTjCTlqONFOIMcAm/5JxS3+utowbXV1OoFr+g== +happy-dom@^20.6.1: + version "20.6.1" + resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-20.6.1.tgz#af9cf1722871621334e0451b01548d551c91b515" + integrity sha512-+0vhESXXhFwkdjZnJ5DlmJIfUYGgIEEjzIjB+aKJbFuqlvvKyOi+XkI1fYbgYR9QCxG5T08koxsQ6HrQfa5gCQ== dependencies: "@types/node" ">=20.0.0" "@types/whatwg-mimetype" "^3.0.2" "@types/ws" "^8.18.1" - entities "^4.5.0" + entities "^6.0.1" whatwg-mimetype "^3.0.0" ws "^8.18.3" @@ -3057,10 +3052,10 @@ vite-plugin-checker@^0.12.0: tinyglobby "^0.2.15" vscode-uri "^3.1.0" -vite-tsconfig-paths@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-6.0.5.tgz#5bcbb44d6ae0d12fe42f5915a6ad9846b0ed7805" - integrity sha512-f/WvY6ekHykUF1rWJUAbCU7iS/5QYDIugwpqJA+ttwKbxSbzNlqlE8vZSrsnxNQciUW+z6lvhlXMaEyZn9MSig== +vite-tsconfig-paths@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-6.1.1.tgz#d5c28cba79c89ebf76489ef1040024b21df6da3a" + integrity sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg== dependencies: debug "^4.1.1" globrex "^0.1.2" diff --git a/scripts/buildx b/scripts/buildx index 5ad77ed9..8838290a 100755 --- a/scripts/buildx +++ b/scripts/buildx @@ -22,7 +22,7 @@ docker buildx build \ --build-arg BUILD_DATE="$(date '+%Y-%m-%d %T %Z')" \ --build-arg GOPROXY="${GOPROXY:-}" \ --build-arg GOPRIVATE="${GOPRIVATE:-}" \ - --platform linux/amd64,linux/arm64,linux/arm/7 \ + --platform linux/amd64,linux/arm64 \ --progress plain \ --pull \ -f docker/Dockerfile \ diff --git a/test/package.json b/test/package.json index 32da94bf..2a4213dd 100644 --- a/test/package.json +++ b/test/package.json @@ -11,7 +11,7 @@ "cypress": "^15.9.0", "cypress-multi-reporters": "^2.0.5", "cypress-wait-until": "^3.0.2", - "eslint": "^9.39.0", + "eslint": "^10.0.0", "eslint-plugin-align-assignments": "^1.1.2", "eslint-plugin-chai-friendly": "^1.1.0", "eslint-plugin-cypress": "^5.2.0", diff --git a/test/yarn.lock b/test/yarn.lock index c788d29e..a63f3255 100644 --- a/test/yarn.lock +++ b/test/yarn.lock @@ -82,65 +82,45 @@ dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.12.1": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== +"@eslint-community/regexpp@^4.12.2": + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== -"@eslint/config-array@^0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.1.tgz#7d1b0060fea407f8301e932492ba8c18aff29713" - integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA== +"@eslint/config-array@^0.23.0": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.23.1.tgz#908223da7b9148f1af5bfb3144b77a9387a89446" + integrity sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA== dependencies: - "@eslint/object-schema" "^2.1.7" + "@eslint/object-schema" "^3.0.1" debug "^4.3.1" - minimatch "^3.1.2" + minimatch "^10.1.1" -"@eslint/config-helpers@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz#1bd006ceeb7e2e55b2b773ab318d300e1a66aeda" - integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw== +"@eslint/config-helpers@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.5.2.tgz#314c7b03d02a371ad8c0a7f6821d5a8a8437ba9d" + integrity sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ== dependencies: - "@eslint/core" "^0.17.0" + "@eslint/core" "^1.1.0" -"@eslint/core@^0.17.0": - version "0.17.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.17.0.tgz#77225820413d9617509da9342190a2019e78761c" - integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ== +"@eslint/core@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-1.1.0.tgz#51f5cd970e216fbdae6721ac84491f57f965836d" + integrity sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw== dependencies: "@types/json-schema" "^7.0.15" -"@eslint/eslintrc@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" - integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== +"@eslint/object-schema@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-3.0.1.tgz#9a1dc9af00d790dc79a9bf57a756e3cb2740ddb9" + integrity sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg== + +"@eslint/plugin-kit@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz#e0cb12ec66719cb2211ad36499fb516f2a63899d" + integrity sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ== dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^10.0.1" - globals "^14.0.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@9.39.2": - version "9.39.2" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.2.tgz#2d4b8ec4c3ea13c1b3748e0c97ecd766bdd80599" - integrity sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA== - -"@eslint/object-schema@^2.1.7": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad" - integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== - -"@eslint/plugin-kit@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz#9779e3fd9b7ee33571a57435cf4335a1794a6cb2" - integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA== - dependencies: - "@eslint/core" "^0.17.0" + "@eslint/core" "^1.1.0" levn "^0.4.1" "@humanfs/core@^0.19.1": @@ -171,6 +151,18 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== +"@isaacs/balanced-match@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" + integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== + +"@isaacs/brace-expansion@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz#0ef5a92d91f2fff2a37646ce54da9e5f599f6eff" + integrity sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ== + dependencies: + "@isaacs/balanced-match" "^4.0.1" + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -217,9 +209,9 @@ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@quobix/vacuum@^0.23.4": - version "0.23.5" - resolved "https://registry.yarnpkg.com/@quobix/vacuum/-/vacuum-0.23.5.tgz#f8cbfb27cdec7437b516422752545439039c26c9" - integrity sha512-4/ybLW692DNkX/kXT/CRTkFF3bOqP5L+hRd7G49bUbXqAkU5E2WwB0z6xEYoVkB+BDDDYm35sw4pzARjJfXcUA== + version "0.23.8" + resolved "https://registry.yarnpkg.com/@quobix/vacuum/-/vacuum-0.23.8.tgz#a994d6db71b483bc34b6683c8c069ef4f26e3e2b" + integrity sha512-fdxBgELoyJWabN5yeaQWlu0IREabqlPQb5EgFQjA7Plc1YjUFIXzh4RMFpQ1OJ/D6OtxXY6SeifEAy0HihQ7Qw== dependencies: https-proxy-agent "^7.0.6" node-fetch "^3.3.2" @@ -230,10 +222,15 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/estree@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== +"@types/esrecurse@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@types/esrecurse/-/esrecurse-4.3.1.tgz#6f636af962fbe6191b830bd676ba5986926bccec" + integrity sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw== + +"@types/estree@^1.0.6", "@types/estree@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== "@types/json-schema@^7.0.15": version "7.0.15" @@ -424,12 +421,12 @@ aws4@^1.8.0: integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== axios@^1.13.1, axios@^1.7.7: - version "1.13.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.4.tgz#15d109a4817fb82f73aea910d41a2c85606076bc" - integrity sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg== + version "1.13.5" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.5.tgz#5e464688fa127e11a660a2c49441c009f6567a43" + integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q== dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.4" + follow-redirects "^1.15.11" + form-data "^4.0.5" proxy-from-env "^1.1.0" balanced-match@^1.0.0: @@ -459,14 +456,6 @@ bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -brace-expansion@^1.1.7: - version "1.1.12" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" - integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - brace-expansion@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" @@ -518,11 +507,6 @@ call-me-maybe@^1.0.1: resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - camelcase@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" @@ -533,7 +517,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== @@ -645,11 +629,6 @@ common-tags@^1.8.0: resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -684,9 +663,9 @@ cypress-wait-until@^3.0.2: integrity sha512-iemies796dD5CgjG5kV0MnpEmKSH+s7O83ZoJLVzuVbZmm4lheMsZqAVT73hlMx4QlkwhxbyUzhOBUOZwoOe0w== cypress@^15.9.0: - version "15.9.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-15.9.0.tgz#9bcbbfbf3923d8aca7d06990cb174d5ba67e4084" - integrity sha512-Ks6Bdilz3TtkLZtTQyqYaqtL/WT3X3APKaSLhTV96TmTyudzSjc6EJsJCHmBb7DxO+3R12q3Jkbjgm/iPgmwfg== + version "15.10.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-15.10.0.tgz#06bed98a690fad1b98a21010613f9c8c7fa9f639" + integrity sha512-OtUh7OMrfEjKoXydlAD1CfG2BvKxIqgWGY4/RMjrqQ3BKGBo5JFKoYNH+Tpcj4xKxWH4XK0Xri+9y8WkxhYbqQ== dependencies: "@cypress/request" "^3.0.10" "@cypress/xvfb" "^1.2.4" @@ -716,7 +695,7 @@ cypress@^15.9.0: hasha "5.2.2" is-installed-globally "~0.4.0" listr2 "^3.8.3" - lodash "^4.17.21" + lodash "^4.17.23" log-symbols "^4.0.0" minimist "^1.2.8" ospath "^1.2.2" @@ -748,7 +727,7 @@ dayjs@^1.10.4: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== -debug@4: +debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -762,19 +741,12 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== - dependencies: - ms "^2.1.3" - decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -877,15 +849,14 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.8.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" - integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== +escodegen@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" + esprima "^4.0.1" + estraverse "^5.2.0" esutils "^2.0.2" - optionator "^0.8.1" optionalDependencies: source-map "~0.6.1" @@ -900,17 +871,19 @@ eslint-plugin-chai-friendly@^1.1.0: integrity sha512-+T1rClpDdXkgBAhC16vRQMI5umiWojVqkj9oUTdpma50+uByCZM/oBfxitZiOkjMRlm725mwFfz/RVgyDRvCKA== eslint-plugin-cypress@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-5.2.1.tgz#0ce3fbe694174068403b3c0c2de252896317b97d" - integrity sha512-HTJLbcd7fwJ4agbHinZ4FUIl38bUTJT3BmH8zdgS2V32LETmPqCtWHi3xlgZ2vpX0aW6kQoHCVVqHm8NxZJ9sA== + version "5.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-5.3.0.tgz#52cb5397829a765a22680ccb010e81b73d249fb2" + integrity sha512-qjHF2Sdi3VkXSMnfQeUqsbYnessgc6T2dus/Q1U+e5102GpPy9eLd8MWW2Xp2SS9bMpPNLnSHwktMhCKr0dIBg== dependencies: - globals "^16.2.0" + globals "^16.5.0" -eslint-scope@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" - integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== +eslint-scope@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-9.1.0.tgz#dfcb41d6c0d73df6b977a50cf3e91c41ddb4154e" + integrity sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ== dependencies: + "@types/esrecurse" "^4.3.1" + "@types/estree" "^1.0.8" esrecurse "^4.3.0" estraverse "^5.2.0" @@ -919,37 +892,34 @@ eslint-visitor-keys@^3.4.3: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" - integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== +eslint-visitor-keys@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz#b9aa1a74aa48c44b3ae46c1597ce7171246a94a9" + integrity sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q== -eslint@^9.39.0: - version "9.39.2" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.2.tgz#cb60e6d16ab234c0f8369a3fe7cc87967faf4b6c" - integrity sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw== +eslint@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.0.0.tgz#c93c36a96d91621d0fbb680db848ea11af56ab1e" + integrity sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg== dependencies: "@eslint-community/eslint-utils" "^4.8.0" - "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.21.1" - "@eslint/config-helpers" "^0.4.2" - "@eslint/core" "^0.17.0" - "@eslint/eslintrc" "^3.3.1" - "@eslint/js" "9.39.2" - "@eslint/plugin-kit" "^0.4.1" + "@eslint-community/regexpp" "^4.12.2" + "@eslint/config-array" "^0.23.0" + "@eslint/config-helpers" "^0.5.2" + "@eslint/core" "^1.1.0" + "@eslint/plugin-kit" "^0.6.0" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.4.2" "@types/estree" "^1.0.6" ajv "^6.12.4" - chalk "^4.0.0" cross-spawn "^7.0.6" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.4.0" - eslint-visitor-keys "^4.2.1" - espree "^10.4.0" - esquery "^1.5.0" + eslint-scope "^9.1.0" + eslint-visitor-keys "^5.0.0" + espree "^11.1.0" + esquery "^1.7.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^8.0.0" @@ -959,39 +929,33 @@ eslint@^9.39.0: imurmurhash "^0.1.4" is-glob "^4.0.0" json-stable-stringify-without-jsonify "^1.0.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" + minimatch "^10.1.1" natural-compare "^1.4.0" optionator "^0.9.3" -espree@^10.0.1, espree@^10.4.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" - integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== +espree@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-11.1.0.tgz#7d0c82a69f8df670728dba256264b383fbf73e8f" + integrity sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw== dependencies: acorn "^8.15.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.2.1" + eslint-visitor-keys "^5.0.0" -esprima@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.2.tgz#76a0fd66fcfe154fd292667dc264019750b1657b" - integrity sha1-dqD9Zvz+FU/SkmZ9wmQBl1CxZXs= +esprima@1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" + integrity sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ== -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== +esquery@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d" + integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g== dependencies: estraverse "^5.1.0" @@ -1002,11 +966,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" @@ -1085,7 +1044,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -1150,10 +1109,10 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== +follow-redirects@^1.15.11: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== foreground-child@^3.1.0: version "3.3.1" @@ -1168,7 +1127,7 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@^4.0.4, form-data@~4.0.4: +form-data@^4.0.4, form-data@^4.0.5, form-data@~4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== @@ -1270,12 +1229,7 @@ global-dirs@^3.0.0: dependencies: ini "2.0.0" -globals@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" - integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== - -globals@^16.2.0: +globals@^16.5.0: version "16.5.0" resolved "https://registry.yarnpkg.com/globals/-/globals-16.5.0.tgz#ccf1594a437b97653b2be13ed4d8f5c9f850cac1" integrity sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ== @@ -1359,14 +1313,6 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -1516,13 +1462,13 @@ jsonfile@^6.0.1: graceful-fs "^4.1.6" jsonpath@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901" - integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== + version "1.2.1" + resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.2.1.tgz#2b74a4bcc78948e43e33ac971138ce0c68bce701" + integrity sha512-Jl6Jhk0jG+kP3yk59SSeGq7LFPR4JQz1DU0K+kXTysUhMostbhU3qh5mjTuf0PqFcXpAT7kvmMt9WxV10NyIgQ== dependencies: - esprima "1.2.2" - static-eval "2.0.2" - underscore "1.12.1" + esprima "1.2.5" + static-eval "2.1.1" + underscore "1.13.6" jsprim@^2.0.2: version "2.0.2" @@ -1549,14 +1495,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - listr2@^3.8.3: version "3.14.0" resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" @@ -1578,17 +1516,12 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash@^4.17.21: +lodash@^4.17.21, lodash@^4.17.23: version "4.17.23" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== @@ -1652,12 +1585,12 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== +minimatch@^10.1.1: + version "10.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.2.tgz#6c3f289f9de66d628fa3feb1842804396a43d81c" + integrity sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw== dependencies: - brace-expansion "^1.1.7" + "@isaacs/brace-expansion" "^5.0.1" minimatch@^9.0.4, minimatch@^9.0.5: version "9.0.5" @@ -1781,18 +1714,6 @@ openapi-types@^12.1.3: resolved "https://registry.yarnpkg.com/openapi-types/-/openapi-types-12.1.3.tgz#471995eb26c4b97b7bd356aacf7b91b73e777dd3" integrity sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw== -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -1836,13 +1757,6 @@ package-json-from-dist@^1.0.0: resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -1886,11 +1800,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" @@ -1925,9 +1834,9 @@ punycode@^2.1.0: integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@~6.14.1: - version "6.14.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.1.tgz#a41d85b9d3902f31d27861790506294881871159" - integrity sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ== + version "6.14.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.2.tgz#b5634cf9d9ad9898e31fba3504e866e8efb6798c" + integrity sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q== dependencies: side-channel "^1.1.0" @@ -1960,11 +1869,6 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -2117,12 +2021,12 @@ sshpk@^1.18.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -static-eval@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42" - integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg== +static-eval@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.1.1.tgz#71ac6a13aa32b9e14c5b5f063c362176b0d584ba" + integrity sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA== dependencies: - escodegen "^1.8.1" + escodegen "^2.1.0" "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" @@ -2291,13 +2195,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -2308,10 +2205,10 @@ type-fest@^0.8.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -underscore@1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" - integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== +underscore@1.13.6: + version "1.13.6" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== universalify@^2.0.0: version "2.0.0" @@ -2361,11 +2258,6 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -word-wrap@~1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== - workerpool@^9.2.0: version "9.3.2" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-9.3.2.tgz#4c045a8b437ae1bc70c646af11929a8b4d238656"