Compare commits

..

1 Commits

Author SHA1 Message Date
dependabot[bot]
3e930a894a Bump the dev-patch-updates group across 1 directory with 3 updates
Bumps the dev-patch-updates group with 3 updates in the /frontend directory: [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome), [@testing-library/react](https://github.com/testing-library/react-testing-library) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `@biomejs/biome` from 2.3.2 to 2.3.13
- [Release notes](https://github.com/biomejs/biome/releases)
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md)
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.3.13/packages/@biomejs/biome)

Updates `@testing-library/react` from 16.3.0 to 16.3.2
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v16.3.0...v16.3.2)

Updates `vitest` from 4.0.6 to 4.0.18
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.18/packages/vitest)

---
updated-dependencies:
- dependency-name: "@biomejs/biome"
  dependency-version: 2.3.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-patch-updates
- dependency-name: "@testing-library/react"
  dependency-version: 16.3.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-patch-updates
- dependency-name: vitest
  dependency-version: 4.0.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-patch-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 22:50:39 +00:00
36 changed files with 1008 additions and 1945 deletions

View File

@@ -3,7 +3,7 @@ updates:
- package-ecosystem: "npm"
directory: "/backend"
schedule:
interval: "weekly"
interval: "daily"
groups:
dev-patch-updates:
dependency-type: "development"
@@ -25,7 +25,7 @@ updates:
- package-ecosystem: "npm"
directory: "/frontend"
schedule:
interval: "weekly"
interval: "daily"
groups:
dev-patch-updates:
dependency-type: "development"
@@ -47,7 +47,7 @@ updates:
- package-ecosystem: "npm"
directory: "/docs"
schedule:
interval: "weekly"
interval: "daily"
groups:
dev-patch-updates:
dependency-type: "development"
@@ -69,7 +69,7 @@ updates:
- package-ecosystem: "npm"
directory: "/test"
schedule:
interval: "weekly"
interval: "daily"
groups:
dev-patch-updates:
dependency-type: "development"
@@ -87,11 +87,11 @@ updates:
dependency-type: "production"
update-types:
- "minor"
- package-ecosystem: "docker"
directory: "/docker"
schedule:
interval: "weekly"
interval: "daily"
groups:
updates:
update-types:

View File

@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.12/schema.json",
"$schema": "https://biomejs.dev/schemas/2.3.2/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",

View File

@@ -1,6 +1,6 @@
import crypto from "node:crypto";
import bcrypt from "bcrypt";
import { generateSecret, generateURI, verify } from "otplib";
import { authenticator } from "otplib";
import errs from "../lib/error.js";
import authModel from "../models/auth.js";
import internalUser from "./user.js";
@@ -27,6 +27,7 @@ const generateBackupCodes = async () => {
};
const internal2fa = {
/**
* Check if user has 2FA enabled
* @param {number} userId
@@ -71,12 +72,8 @@ const internal2fa = {
startSetup: async (access, userId) => {
await access.can("users:password", userId);
const user = await internalUser.get(access, { id: userId });
const secret = generateSecret();
const otpauth_url = generateURI({
issuer: APP_NAME,
label: user.email,
secret: secret,
});
const secret = authenticator.generateSecret();
const otpauth_url = authenticator.keyuri(user.email, APP_NAME, secret);
const auth = await internal2fa.getUserPasswordAuth(userId);
// ensure user isn't already setup for 2fa
@@ -88,8 +85,7 @@ const internal2fa = {
const meta = auth.meta || {};
meta.totp_pending_secret = secret;
await authModel
.query()
await authModel.query()
.where("id", auth.id)
.andWhere("user_id", userId)
.andWhere("type", "password")
@@ -116,8 +112,8 @@ const internal2fa = {
throw new errs.ValidationError("No pending 2FA setup found");
}
const result = await verify({ token: code, secret });
if (!result.valid) {
const valid = authenticator.verify({ token: code, secret });
if (!valid) {
throw new errs.ValidationError("Invalid verification code");
}
@@ -160,12 +156,12 @@ const internal2fa = {
throw new errs.ValidationError("2FA is not enabled");
}
const result = await verify({
const valid = authenticator.verify({
token: code,
secret: auth.meta.totp_secret,
});
if (!result.valid) {
if (!valid) {
throw new errs.AuthError("Invalid verification code");
}
@@ -199,12 +195,12 @@ const internal2fa = {
}
// Try TOTP code first
const result = await verify({
const valid = authenticator.verify({
token,
secret,
});
if (result.valid) {
if (valid) {
return true;
}
@@ -252,12 +248,12 @@ const internal2fa = {
throw new errs.ValidationError("No 2FA secret found");
}
const result = await verify({
const valid = authenticator.verify({
token,
secret,
});
if (!result.valid) {
if (!valid) {
throw new errs.ValidationError("Invalid verification code");
}
@@ -275,7 +271,11 @@ const internal2fa = {
},
getUserPasswordAuth: async (userId) => {
const auth = await authModel.query().where("user_id", userId).andWhere("type", "password").first();
const auth = await authModel
.query()
.where("user_id", userId)
.andWhere("type", "password")
.first();
if (!auth) {
throw new errs.ItemNotFoundError("Auth not found");

View File

@@ -12,36 +12,36 @@
"validate-schema": "node validate-schema.js"
},
"dependencies": {
"@apidevtools/json-schema-ref-parser": "^14.1.1",
"@apidevtools/json-schema-ref-parser": "^11.7.0",
"ajv": "^8.17.1",
"archiver": "^7.0.1",
"archiver": "^5.3.0",
"batchflow": "^0.4.0",
"bcrypt": "^6.0.0",
"body-parser": "^2.2.2",
"bcrypt": "^5.0.0",
"body-parser": "^1.20.3",
"compression": "^1.7.4",
"express": "^5.2.1",
"express": "^4.22.0",
"express-fileupload": "^1.5.2",
"gravatar": "^1.8.2",
"jsonwebtoken": "^9.0.3",
"knex": "3.1.0",
"liquidjs": "10.24.0",
"liquidjs": "10.6.1",
"lodash": "^4.17.23",
"moment": "^2.30.1",
"mysql2": "^3.16.2",
"mysql2": "^3.15.3",
"node-rsa": "^1.1.1",
"objection": "3.1.5",
"otplib": "^13.2.1",
"objection": "3.0.1",
"otplib": "^12.0.1",
"path": "^0.12.7",
"pg": "^8.18.0",
"pg": "^8.16.3",
"proxy-agent": "^6.5.0",
"signale": "1.4.0",
"sqlite3": "^5.1.7",
"temp-write": "^4.0.0"
},
"devDependencies": {
"@apidevtools/swagger-parser": "^12.1.0",
"@apidevtools/swagger-parser": "^10.1.0",
"@biomejs/biome": "^2.3.12",
"chalk": "5.6.2",
"chalk": "4.1.2",
"nodemon": "^3.1.11"
},
"signale": {

File diff suppressed because it is too large Load Diff

View File

@@ -109,7 +109,7 @@ services:
- "cypress_logs:/test/results"
- "./dev/resolv.conf:/etc/resolv.conf:ro"
- "/etc/localtime:/etc/localtime:ro"
command: cypress run --browser chrome --config-file=cypress/config/ci.mjs
command: cypress run --browser chrome --config-file=cypress/config/ci.js
networks:
- fulltest

View File

@@ -192,7 +192,7 @@ services:
- "../test/results:/results"
- "./dev/resolv.conf:/etc/resolv.conf:ro"
- "/etc/localtime:/etc/localtime:ro"
command: cypress run --browser chrome --config-file=cypress/config/ci.mjs
command: cypress run --browser chrome --config-file=cypress/config/ci.js
networks:
- nginx_proxy_manager

View File

@@ -5,9 +5,6 @@ if ($scheme = "http") {
if ($request_uri = /.well-known/acme-challenge/test-challenge) {
set $test "${test}T";
}
if ($http_x_forwarded_proto = "https") {
set $test "${test}S";
}
if ($test = H) {
return 301 https://$host$request_uri;
}

View File

@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.14/schema.json",
"$schema": "https://biomejs.dev/schemas/2.3.2/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",

View File

@@ -9,7 +9,6 @@
const allLocales = [
["en", "en-US"],
["de", "de-DE"],
["pt", "pt-PT"],
["es", "es-ES"],
["fr", "fr-FR"],
["it", "it-IT"],

View File

@@ -17,42 +17,42 @@
},
"dependencies": {
"@tabler/core": "^1.4.0",
"@tabler/icons-react": "^3.36.1",
"@tanstack/react-query": "^5.90.20",
"@tabler/icons-react": "^3.35.0",
"@tanstack/react-query": "^5.90.6",
"@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.5.21",
"date-fns": "^4.1.0",
"ez-modal-react": "^1.0.5",
"formik": "^2.4.9",
"formik": "^2.4.6",
"generate-password-browser": "^1.1.0",
"humps": "^2.0.1",
"query-string": "^9.3.1",
"react": "^19.2.4",
"react": "^19.2.3",
"react-bootstrap": "^2.10.10",
"react-dom": "^19.2.4",
"react-intl": "^8.1.3",
"react-dom": "^19.2.3",
"react-intl": "^7.1.14",
"react-markdown": "^10.1.0",
"react-router-dom": "^7.13.0",
"react-router-dom": "^7.9.5",
"react-select": "^5.10.2",
"react-toastify": "^11.0.5",
"rooks": "^9.5.0"
"rooks": "^9.3.0"
},
"devDependencies": {
"@biomejs/biome": "^2.3.14",
"@formatjs/cli": "^6.12.2",
"@tanstack/react-query-devtools": "^5.91.3",
"@biomejs/biome": "^2.3.13",
"@formatjs/cli": "^6.12.0",
"@tanstack/react-query-devtools": "^5.91.2",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.9.1",
"@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.7",
"@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.2",
"happy-dom": "^20.3.9",
"postcss": "^8.5.6",
"postcss-simple-vars": "^7.0.1",
"sass": "^1.97.3",

View File

@@ -1,7 +1,6 @@
import { createIntl, createIntlCache } from "react-intl";
import langBg from "./lang/bg.json";
import langDe from "./lang/de.json";
import langPt from "./lang/pt.json";
import langEn from "./lang/en.json";
import langEs from "./lang/es.json";
import langFr from "./lang/fr.json";
@@ -27,7 +26,6 @@ const localeOptions = [
["en", "en-US", langEn],
["de", "de-DE", langDe],
["es", "es-ES", langEs],
["pt", "pt-PT", langPt],
["fr", "fr-FR", langFr],
["ga", "ga-IE", langGa],
["ja", "ja-JP", langJa],

View File

@@ -1,6 +1,5 @@
import * as bg from "./bg/index";
import * as de from "./de/index";
import * as pt from "./pt/index";
import * as en from "./en/index";
import * as es from "./es/index";
import * as fr from "./fr/index";
@@ -18,8 +17,7 @@ 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, es, ja, sk, zh, pl, ru, it, vi, nl, bg, ko, ga, id, fr, tr, hu };
const fallbackLang = "en";

View File

@@ -1,11 +0,0 @@
## O que é uma Access List?
As *Access Lists* fornecem uma lista de permissões (whitelist) ou bloqueios (blacklist)
de endereços IP específicos de clientes, juntamente com autenticação para os *Proxy Hosts*
via Autenticação HTTP Básica (*Basic Auth*).
Podes configurar múltiplas regras de cliente, nomes de utilizador e palavras-passe
para uma única *Access List*, e depois aplicá-la a um ou mais *Proxy Hosts*.
Isto é especialmente útil para serviços web encaminhados que não têm mecanismos
de autenticação integrados ou quando pretendes proteger o acesso contra clientes desconhecidos.

View File

@@ -1,31 +0,0 @@
## Ajuda de Certificados
### Certificado HTTP
Um certificado validado por HTTP significa que os servidores do Let's Encrypt irão
tentar aceder aos teus domínios via HTTP (não HTTPS!) e, se a ligação for bem-sucedida,
emitirão o certificado.
Para este método, é necessário ter um *Proxy Host* criado para o(s) teu(s) domínio(s),
acessível via HTTP e a apontar para esta instalação do Nginx. Depois de o certificado ser
emitido, podes modificar o *Proxy Host* para também utilizar esse certificado em ligações HTTPS.
No entanto, o *Proxy Host* deve continuar configurado para acesso HTTP para que a renovação
funcione corretamente.
Este processo **não** suporta domínios wildcard.
### Certificado DNS
Um certificado validado por DNS requer que uses um plugin de fornecedor DNS (*DNS Provider*).
Este fornecedor será usado para criar registos temporários no teu domínio, que serão consultados
pelo Let's Encrypt para confirmar que és o proprietário. Se tudo correr bem, o certificado será emitido.
Não é necessário ter um *Proxy Host* criado antes de pedir este tipo de certificado.
Também não é necessário que o *Proxy Host* tenha acesso HTTP configurado.
Este processo **suporta** domínios wildcard.
### Certificado Personalizado
Usa esta opção para carregar o teu próprio Certificado SSL, fornecido pela
tua Autoridade Certificadora.

View File

@@ -1,9 +0,0 @@
## O que é um 404 Host?
Um *404 Host* é simplesmente um host configurado para apresentar uma página 404.
Isto pode ser útil quando o teu domínio aparece em motores de busca e queres fornecer
uma página de erro mais agradável ou indicar especificamente aos indexadores de pesquisa
que as páginas desse domínio já não existem.
Outra vantagem é permitir consultar os registos de acessos a este host e ver os referenciadores.

View File

@@ -1,7 +0,0 @@
## O que é um Proxy Host?
Um *Proxy Host* é o ponto de entrada para um serviço web que pretendes encaminhar.
Permite, opcionalmente, fazer terminação SSL para um serviço que possa não ter suporte SSL nativo.
Os *Proxy Hosts* são a utilização mais comum do Nginx Proxy Manager.

View File

@@ -1,7 +0,0 @@
## O que é um Redirection Host?
Um *Redirection Host* redireciona pedidos recebidos no domínio de entrada e envia
o utilizador para outro domínio.
A razão mais comum para usar este tipo de host é quando o teu site muda de domínio
mas ainda tens motores de busca ou links de referência a apontar para o domínio antigo.

View File

@@ -1,6 +0,0 @@
## O que é um Stream?
Uma funcionalidade relativamente recente no Nginx, um *Stream* serve para encaminhar
tráfego TCP/UDP diretamente para outro computador na rede.
Se estiveres a executar servidores de jogos, FTP ou SSH, isto pode ser bastante útil.

View File

@@ -1,6 +0,0 @@
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";

View File

@@ -11,9 +11,6 @@
"locale-de-DE": {
"defaultMessage": "German"
},
"locale-pt-PT": {
"defaultMessage": "Português (Europeu)"
},
"locale-fr-FR": {
"defaultMessage": "Français"
},

View File

@@ -1,683 +0,0 @@
{
"access-list": {
"defaultMessage": "Lista de Controlo de Acesso (ACL)"
},
"access-list.access-count": {
"defaultMessage": "{count} {count, plural, one {Regra} other {Regras}}"
},
"access-list.auth-count": {
"defaultMessage": "{count} {count, plural, one {Utilizador} other {Utilizadores}}"
},
"access-list.help-rules-last": {
"defaultMessage": "Quando existir pelo menos 1 regra, esta regra de negação geral será aplicada em último lugar"
},
"access-list.help.rules-order": {
"defaultMessage": "Nota: as diretivas allow e deny são aplicadas pela ordem em que forem definidas."
},
"access-list.pass-auth": {
"defaultMessage": "Passar Autenticação para o Upstream"
},
"access-list.public": {
"defaultMessage": "Acesso Público"
},
"access-list.public.subtitle": {
"defaultMessage": "Sem autenticação básica"
},
"access-list.rule-source.placeholder": {
"defaultMessage": "192.168.1.100 ou 192.168.1.0/24 ou 2001:0db8::/32"
},
"access-list.satisfy-any": {
"defaultMessage": "Satisfazer Qualquer"
},
"access-list.subtitle": {
"defaultMessage": "{users} {users, plural, one {Utilizador} other {Utilizadores}}, {rules} {rules, plural, one {Regra} other {Regras}} Criado em: {date}"
},
"access-lists": {
"defaultMessage": "Listas de Controlo de Acesso (ACL)"
},
"action.add": {
"defaultMessage": "Adicionar"
},
"action.add-location": {
"defaultMessage": "Adicionar Location"
},
"action.allow": {
"defaultMessage": "Permitir"
},
"action.close": {
"defaultMessage": "Fechar"
},
"action.delete": {
"defaultMessage": "Eliminar"
},
"action.deny": {
"defaultMessage": "Negar"
},
"action.disable": {
"defaultMessage": "Desativar"
},
"action.download": {
"defaultMessage": "Descarregar"
},
"action.edit": {
"defaultMessage": "Editar"
},
"action.enable": {
"defaultMessage": "Ativar"
},
"action.permissions": {
"defaultMessage": "Permissões"
},
"action.renew": {
"defaultMessage": "Renovar"
},
"action.view-details": {
"defaultMessage": "Ver Detalhes"
},
"auditlogs": {
"defaultMessage": "Registos de Auditoria"
},
"auto": {
"defaultMessage": "Automático"
},
"cancel": {
"defaultMessage": "Cancelar"
},
"certificate": {
"defaultMessage": "Certificado"
},
"certificate.custom-certificate": {
"defaultMessage": "Certificado Personalizado"
},
"certificate.custom-certificate-key": {
"defaultMessage": "Chave do Certificado"
},
"certificate.custom-intermediate": {
"defaultMessage": "Certificado Intermédio"
},
"certificate.in-use": {
"defaultMessage": "Em Utilização"
},
"certificate.none.subtitle": {
"defaultMessage": "Nenhum certificado atribuído"
},
"certificate.none.subtitle.for-http": {
"defaultMessage": "Este host não irá utilizar HTTPS"
},
"certificate.none.title": {
"defaultMessage": "Nenhum"
},
"certificate.not-in-use": {
"defaultMessage": "Não Utilizado"
},
"certificate.renew": {
"defaultMessage": "Renovar Certificado"
},
"certificates": {
"defaultMessage": "Certificados"
},
"certificates.custom": {
"defaultMessage": "Certificado Personalizado"
},
"certificates.custom.warning": {
"defaultMessage": "Ficheiros de chave protegidos por palavra-passe não são suportados."
},
"certificates.dns.credentials": {
"defaultMessage": "Conteúdo do Ficheiro de Credenciais"
},
"certificates.dns.credentials-note": {
"defaultMessage": "Este plugin requer um ficheiro de configuração contendo um token API ou outras credenciais do fornecedor DNS."
},
"certificates.dns.credentials-warning": {
"defaultMessage": "Estes dados serão guardados em texto simples na base de dados e num ficheiro!"
},
"certificates.dns.propagation-seconds": {
"defaultMessage": "Segundos de Propagação"
},
"certificates.dns.propagation-seconds-note": {
"defaultMessage": "Deixe em branco para usar o valor predefinido do plugin. Número de segundos a aguardar pela propagação DNS."
},
"certificates.dns.provider": {
"defaultMessage": "Fornecedor DNS"
},
"certificates.dns.provider.placeholder": {
"defaultMessage": "Selecionar fornecedor..."
},
"certificates.dns.warning": {
"defaultMessage": "Esta secção requer conhecimentos sobre o Certbot e os seus plugins DNS. Consulte a documentação dos plugins."
},
"certificates.http.reachability-404": {
"defaultMessage": "Foi encontrado um servidor neste domínio, mas não parece ser o Nginx Proxy Manager. Certifique-se de que o domínio aponta para o IP onde a sua instância está a correr."
},
"certificates.http.reachability-failed-to-check": {
"defaultMessage": "Falha ao verificar acessibilidade devido a um erro de comunicação com site24x7.com."
},
"certificates.http.reachability-not-resolved": {
"defaultMessage": "Não existe nenhum servidor acessível neste domínio. Certifique-se de que o domínio existe, aponta para o IP correto e que a porta 80 está encaminhada no seu router."
},
"certificates.http.reachability-ok": {
"defaultMessage": "O servidor está acessível e a criação de certificados deverá ser possível."
},
"certificates.http.reachability-other": {
"defaultMessage": "Foi encontrado um servidor neste domínio, mas devolveu um código inesperado ({code}). Será o servidor NPM? Confirme que o domínio aponta para o IP correto."
},
"certificates.http.reachability-wrong-data": {
"defaultMessage": "Foi encontrado um servidor neste domínio, mas devolveu dados inesperados. Será o servidor NPM? Confirme que o domínio aponta para o IP correto."
},
"certificates.http.test-results": {
"defaultMessage": "Resultados do Teste"
},
"certificates.http.warning": {
"defaultMessage": "Estes domínios devem já estar configurados para apontar para esta instalação."
},
"certificates.request.subtitle": {
"defaultMessage": "com o Let's Encrypt"
},
"certificates.request.title": {
"defaultMessage": "Pedir Novo Certificado"
},
"column.access": {
"defaultMessage": "Acesso"
},
"column.authorization": {
"defaultMessage": "Autorização"
},
"column.authorizations": {
"defaultMessage": "Autorizações"
},
"column.custom-locations": {
"defaultMessage": "Locations Personalizados"
},
"column.destination": {
"defaultMessage": "Destino"
},
"column.details": {
"defaultMessage": "Detalhes"
},
"column.email": {
"defaultMessage": "Email"
},
"column.event": {
"defaultMessage": "Evento"
},
"column.expires": {
"defaultMessage": "Expira"
},
"column.http-code": {
"defaultMessage": "Código HTTP"
},
"column.incoming-port": {
"defaultMessage": "Porta de Entrada"
},
"column.name": {
"defaultMessage": "Nome"
},
"column.protocol": {
"defaultMessage": "Protocolo"
},
"column.provider": {
"defaultMessage": "Fornecedor"
},
"column.roles": {
"defaultMessage": "Funções"
},
"column.rules": {
"defaultMessage": "Regras"
},
"column.satisfy": {
"defaultMessage": "Satisfazer"
},
"column.satisfy-all": {
"defaultMessage": "Todos"
},
"column.satisfy-any": {
"defaultMessage": "Qualquer"
},
"column.scheme": {
"defaultMessage": "Esquema"
},
"column.source": {
"defaultMessage": "Origem"
},
"column.ssl": {
"defaultMessage": "SSL"
},
"column.status": {
"defaultMessage": "Estado"
},
"created-on": {
"defaultMessage": "Criado em: {date}"
},
"dashboard": {
"defaultMessage": "Painel"
},
"dead-host": {
"defaultMessage": "Host 404"
},
"dead-hosts": {
"defaultMessage": "Hosts 404"
},
"dead-hosts.count": {
"defaultMessage": "{count} {count, plural, one {Host 404} other {Hosts 404}}"
},
"disabled": {
"defaultMessage": "Desativado"
},
"domain-names": {
"defaultMessage": "Nomes de Domínio"
},
"domain-names.max": {
"defaultMessage": "Máximo de {count} domínios"
},
"domain-names.placeholder": {
"defaultMessage": "Comece a escrever para adicionar um domínio..."
},
"domain-names.wildcards-not-permitted": {
"defaultMessage": "Wildcards não permitidos para este tipo"
},
"domain-names.wildcards-not-supported": {
"defaultMessage": "Wildcards não suportados por esta AC"
},
"domains.force-ssl": {
"defaultMessage": "Forçar SSL"
},
"domains.hsts-enabled": {
"defaultMessage": "HSTS Ativado"
},
"domains.hsts-subdomains": {
"defaultMessage": "HSTS para Subdomínios"
},
"domains.http2-support": {
"defaultMessage": "Suporte HTTP/2"
},
"domains.use-dns": {
"defaultMessage": "Utilizar DNS Challenge"
},
"email-address": {
"defaultMessage": "Endereço de Email"
},
"empty-search": {
"defaultMessage": "Nenhum resultado encontrado"
},
"empty-subtitle": {
"defaultMessage": "Porque não cria um?"
},
"enabled": {
"defaultMessage": "Ativado"
},
"error.access.at-least-one": {
"defaultMessage": "É necessária pelo menos uma Autorização ou uma Regra de Acesso"
},
"error.access.duplicate-usernames": {
"defaultMessage": "Os nomes de utilizador de autorização devem ser únicos"
},
"error.invalid-auth": {
"defaultMessage": "Email ou palavra-passe inválidos"
},
"error.invalid-domain": {
"defaultMessage": "Domínio inválido: {domain}"
},
"error.invalid-email": {
"defaultMessage": "Endereço de email inválido"
},
"error.max-character-length": {
"defaultMessage": "Tamanho máximo: {max} caractere{max, plural, one {} other {s}}"
},
"error.max-domains": {
"defaultMessage": "Demasiados domínios; o máximo é {max}"
},
"error.maximum": {
"defaultMessage": "Máximo permitido: {max}"
},
"error.min-character-length": {
"defaultMessage": "Tamanho mínimo: {min} caractere{min, plural, one {} other {s}}"
},
"error.minimum": {
"defaultMessage": "Mínimo permitido: {min}"
},
"error.passwords-must-match": {
"defaultMessage": "As palavras-passe têm de coincidir"
},
"error.required": {
"defaultMessage": "Campo obrigatório"
},
"expires.on": {
"defaultMessage": "Expira em: {date}"
},
"footer.github-fork": {
"defaultMessage": "Faz fork no GitHub"
},
"host.flags.block-exploits": {
"defaultMessage": "Bloquear Exploits Comuns"
},
"host.flags.cache-assets": {
"defaultMessage": "Cache de Conteúdos Estáticos"
},
"host.flags.preserve-path": {
"defaultMessage": "Preservar Caminho"
},
"host.flags.protocols": {
"defaultMessage": "Protocolos"
},
"host.flags.websockets-upgrade": {
"defaultMessage": "Suporte para WebSockets"
},
"host.forward-port": {
"defaultMessage": "Porta de Encaminhamento"
},
"host.forward-scheme": {
"defaultMessage": "Esquema"
},
"hosts": {
"defaultMessage": "Hosts"
},
"http-only": {
"defaultMessage": "Apenas HTTP"
},
"lets-encrypt": {
"defaultMessage": "Let's Encrypt"
},
"lets-encrypt-via-dns": {
"defaultMessage": "Let's Encrypt via DNS"
},
"lets-encrypt-via-http": {
"defaultMessage": "Let's Encrypt via HTTP"
},
"loading": {
"defaultMessage": "A carregar…"
},
"login.title": {
"defaultMessage": "Iniciar sessão na sua conta"
},
"nginx-config.label": {
"defaultMessage": "Configuração Nginx Personalizada"
},
"nginx-config.placeholder": {
"defaultMessage": "# Insira aqui a sua configuração Nginx personalizada (utilize por sua conta e risco!)"
},
"no-permission-error": {
"defaultMessage": "Não tem permissões para ver esta página."
},
"notfound.action": {
"defaultMessage": "Voltar à página inicial"
},
"notfound.content": {
"defaultMessage": "A página que procura não foi encontrada."
},
"notfound.title": {
"defaultMessage": "Oops… Encontrou uma página de erro"
},
"notification.error": {
"defaultMessage": "Erro"
},
"notification.object-deleted": {
"defaultMessage": "{object} foi eliminado"
},
"notification.object-disabled": {
"defaultMessage": "{object} foi desativado"
},
"notification.object-enabled": {
"defaultMessage": "{object} foi ativado"
},
"notification.object-renewed": {
"defaultMessage": "{object} foi renovado"
},
"notification.object-saved": {
"defaultMessage": "{object} foi guardado"
},
"notification.success": {
"defaultMessage": "Sucesso"
},
"object.actions-title": {
"defaultMessage": "{object} #{id}"
},
"object.add": {
"defaultMessage": "Adicionar {object}"
},
"object.delete": {
"defaultMessage": "Eliminar {object}"
},
"object.delete.content": {
"defaultMessage": "Tem a certeza de que deseja eliminar este {object}?"
},
"object.edit": {
"defaultMessage": "Editar {object}"
},
"object.empty": {
"defaultMessage": "Não existem {objects}"
},
"object.event.created": {
"defaultMessage": "{object} criado"
},
"object.event.deleted": {
"defaultMessage": "{object} eliminado"
},
"object.event.disabled": {
"defaultMessage": "{object} desativado"
},
"object.event.enabled": {
"defaultMessage": "{object} ativado"
},
"object.event.renewed": {
"defaultMessage": "{object} renovado"
},
"object.event.updated": {
"defaultMessage": "{object} atualizado"
},
"offline": {
"defaultMessage": "Offline"
},
"online": {
"defaultMessage": "Online"
},
"options": {
"defaultMessage": "Opções"
},
"password": {
"defaultMessage": "Palavra-passe"
},
"password.generate": {
"defaultMessage": "Gerar palavra-passe aleatória"
},
"password.hide": {
"defaultMessage": "Esconder Palavra-passe"
},
"password.show": {
"defaultMessage": "Mostrar Palavra-passe"
},
"permissions.hidden": {
"defaultMessage": "Oculto"
},
"permissions.manage": {
"defaultMessage": "Gerir"
},
"permissions.view": {
"defaultMessage": "Apenas Visualização"
},
"permissions.visibility.all": {
"defaultMessage": "Todos os Itens"
},
"permissions.visibility.title": {
"defaultMessage": "Visibilidade do Item"
},
"permissions.visibility.user": {
"defaultMessage": "Apenas Itens Criados"
},
"proxy-host": {
"defaultMessage": "Proxy Host"
},
"proxy-host.forward-host": {
"defaultMessage": "Hostname/IP de Encaminhamento"
},
"proxy-hosts": {
"defaultMessage": "Proxy Hosts"
},
"proxy-hosts.count": {
"defaultMessage": "{count} {count, plural, one {Proxy Host} other {Proxy Hosts}}"
},
"public": {
"defaultMessage": "Público"
},
"redirection-host": {
"defaultMessage": "Host de Redirecionamento"
},
"redirection-host.forward-domain": {
"defaultMessage": "Domínio de Destino"
},
"redirection-host.forward-http-code": {
"defaultMessage": "Código HTTP"
},
"redirection-hosts": {
"defaultMessage": "Hosts de Redirecionamento"
},
"redirection-hosts.count": {
"defaultMessage": "{count} {count, plural, one {Host de Redirecionamento} other {Hosts de Redirecionamento}}"
},
"redirection-hosts.http-code.300": {
"defaultMessage": "300 Múltiplas Escolhas"
},
"redirection-hosts.http-code.301": {
"defaultMessage": "301 Movido Permanentemente"
},
"redirection-hosts.http-code.302": {
"defaultMessage": "302 Movido Temporariamente"
},
"redirection-hosts.http-code.303": {
"defaultMessage": "303 Ver Outro"
},
"redirection-hosts.http-code.307": {
"defaultMessage": "307 Redirecionamento Temporário"
},
"redirection-hosts.http-code.308": {
"defaultMessage": "308 Redirecionamento Permanente"
},
"role.admin": {
"defaultMessage": "Administrador"
},
"role.standard-user": {
"defaultMessage": "Utilizador Comum"
},
"save": {
"defaultMessage": "Guardar"
},
"setting": {
"defaultMessage": "Definição"
},
"settings": {
"defaultMessage": "Definições"
},
"settings.default-site": {
"defaultMessage": "Site Predefinido"
},
"settings.default-site.404": {
"defaultMessage": "Página 404"
},
"settings.default-site.444": {
"defaultMessage": "Sem Resposta (444)"
},
"settings.default-site.congratulations": {
"defaultMessage": "Página de Boas-vindas"
},
"settings.default-site.description": {
"defaultMessage": "O que apresentar quando o Nginx recebe um Host desconhecido"
},
"settings.default-site.html": {
"defaultMessage": "HTML Personalizado"
},
"settings.default-site.html.placeholder": {
"defaultMessage": "<!-- Insira aqui o seu conteúdo HTML personalizado -->"
},
"settings.default-site.redirect": {
"defaultMessage": "Redirecionar"
},
"setup.preamble": {
"defaultMessage": "Comece por criar a sua conta de administrador."
},
"setup.title": {
"defaultMessage": "Bem-vindo!"
},
"sign-in": {
"defaultMessage": "Iniciar Sessão"
},
"ssl-certificate": {
"defaultMessage": "Certificado SSL"
},
"stream": {
"defaultMessage": "Stream"
},
"stream.forward-host": {
"defaultMessage": "Host de Destino"
},
"stream.forward-host.placeholder": {
"defaultMessage": "example.com ou 10.0.0.1 ou 2001:db8:3333:4444:5555:6666:7777:8888"
},
"stream.incoming-port": {
"defaultMessage": "Porta de Entrada"
},
"streams": {
"defaultMessage": "Streams"
},
"streams.count": {
"defaultMessage": "{count} {count, plural, one {Stream} other {Streams}}"
},
"streams.tcp": {
"defaultMessage": "TCP"
},
"streams.udp": {
"defaultMessage": "UDP"
},
"test": {
"defaultMessage": "Testar"
},
"update-available": {
"defaultMessage": "Atualização Disponível: {latestVersion}"
},
"user": {
"defaultMessage": "Utilizador"
},
"user.change-password": {
"defaultMessage": "Alterar Palavra-passe"
},
"user.confirm-password": {
"defaultMessage": "Confirmar Palavra-passe"
},
"user.current-password": {
"defaultMessage": "Palavra-passe Atual"
},
"user.edit-profile": {
"defaultMessage": "Editar Perfil"
},
"user.full-name": {
"defaultMessage": "Nome Completo"
},
"user.login-as": {
"defaultMessage": "Iniciar sessão como {name}"
},
"user.logout": {
"defaultMessage": "Terminar Sessão"
},
"user.new-password": {
"defaultMessage": "Nova Palavra-passe"
},
"user.nickname": {
"defaultMessage": "Alcunha"
},
"user.set-password": {
"defaultMessage": "Definir Palavra-passe"
},
"user.set-permissions": {
"defaultMessage": "Definir Permissões para {name}"
},
"user.switch-dark": {
"defaultMessage": "Ativar Modo Escuro"
},
"user.switch-light": {
"defaultMessage": "Ativar Modo Claro"
},
"username": {
"defaultMessage": "Nome de Utilizador"
},
"users": {
"defaultMessage": "Utilizadores"
}
}

View File

@@ -41,7 +41,7 @@ const RenewCertificateModal = EasyModal.create(({ id, visible, remove }: Props)
.finally(() => {
setIsSubmitting(false);
});
}, [id, data, isFresh, isSubmitting, remove, queryClient]);
}, [id, data, isFresh, isSubmitting, remove, queryClient.invalidateQueries]);
return (
<Modal show={visible} onHide={isSubmitting ? undefined : remove}>

View File

@@ -16,34 +16,25 @@
js-tokens "^4.0.0"
picocolors "^1.1.1"
"@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0":
version "7.29.0"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c"
integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==
dependencies:
"@babel/helper-validator-identifier" "^7.28.5"
js-tokens "^4.0.0"
picocolors "^1.1.1"
"@babel/compat-data@^7.27.2":
version "7.28.0"
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz"
integrity sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==
"@babel/compat-data@^7.28.6":
version "7.29.0"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d"
integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==
"@babel/core@^7.29.0":
version "7.29.0"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322"
integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==
"@babel/core@^7.28.5":
version "7.28.5"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz"
integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==
dependencies:
"@babel/code-frame" "^7.29.0"
"@babel/generator" "^7.29.0"
"@babel/helper-compilation-targets" "^7.28.6"
"@babel/helper-module-transforms" "^7.28.6"
"@babel/helpers" "^7.28.6"
"@babel/parser" "^7.29.0"
"@babel/template" "^7.28.6"
"@babel/traverse" "^7.29.0"
"@babel/types" "^7.29.0"
"@babel/code-frame" "^7.27.1"
"@babel/generator" "^7.28.5"
"@babel/helper-compilation-targets" "^7.27.2"
"@babel/helper-module-transforms" "^7.28.3"
"@babel/helpers" "^7.28.4"
"@babel/parser" "^7.28.5"
"@babel/template" "^7.27.2"
"@babel/traverse" "^7.28.5"
"@babel/types" "^7.28.5"
"@jridgewell/remapping" "^2.3.5"
convert-source-map "^2.0.0"
debug "^4.1.0"
@@ -62,23 +53,12 @@
"@jridgewell/trace-mapping" "^0.3.28"
jsesc "^3.0.2"
"@babel/generator@^7.29.0":
version "7.29.0"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.0.tgz#4cba5a76b3c71d8be31761b03329d5dc7768447f"
integrity sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==
"@babel/helper-compilation-targets@^7.27.2":
version "7.27.2"
resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz"
integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==
dependencies:
"@babel/parser" "^7.29.0"
"@babel/types" "^7.29.0"
"@jridgewell/gen-mapping" "^0.3.12"
"@jridgewell/trace-mapping" "^0.3.28"
jsesc "^3.0.2"
"@babel/helper-compilation-targets@^7.28.6":
version "7.28.6"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25"
integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==
dependencies:
"@babel/compat-data" "^7.28.6"
"@babel/compat-data" "^7.27.2"
"@babel/helper-validator-option" "^7.27.1"
browserslist "^4.24.0"
lru-cache "^5.1.1"
@@ -89,7 +69,7 @@
resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz"
integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==
"@babel/helper-module-imports@^7.16.7":
"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.27.1":
version "7.27.1"
resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz"
integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==
@@ -97,22 +77,14 @@
"@babel/traverse" "^7.27.1"
"@babel/types" "^7.27.1"
"@babel/helper-module-imports@^7.28.6":
version "7.28.6"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c"
integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==
"@babel/helper-module-transforms@^7.28.3":
version "7.28.3"
resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz"
integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==
dependencies:
"@babel/traverse" "^7.28.6"
"@babel/types" "^7.28.6"
"@babel/helper-module-transforms@^7.28.6":
version "7.28.6"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e"
integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==
dependencies:
"@babel/helper-module-imports" "^7.28.6"
"@babel/helper-validator-identifier" "^7.28.5"
"@babel/traverse" "^7.28.6"
"@babel/helper-module-imports" "^7.27.1"
"@babel/helper-validator-identifier" "^7.27.1"
"@babel/traverse" "^7.28.3"
"@babel/helper-plugin-utils@^7.27.1":
version "7.27.1"
@@ -134,13 +106,13 @@
resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz"
integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
"@babel/helpers@^7.28.6":
version "7.28.6"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7"
integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==
"@babel/helpers@^7.28.4":
version "7.28.4"
resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz"
integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==
dependencies:
"@babel/template" "^7.28.6"
"@babel/types" "^7.28.6"
"@babel/template" "^7.27.2"
"@babel/types" "^7.28.4"
"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5":
version "7.28.5"
@@ -149,13 +121,6 @@
dependencies:
"@babel/types" "^7.28.5"
"@babel/parser@^7.28.6", "@babel/parser@^7.29.0":
version "7.29.0"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6"
integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==
dependencies:
"@babel/types" "^7.29.0"
"@babel/plugin-transform-react-jsx-self@^7.27.1":
version "7.27.1"
resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz"
@@ -184,16 +149,7 @@
"@babel/parser" "^7.27.2"
"@babel/types" "^7.27.1"
"@babel/template@^7.28.6":
version "7.28.6"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57"
integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==
dependencies:
"@babel/code-frame" "^7.28.6"
"@babel/parser" "^7.28.6"
"@babel/types" "^7.28.6"
"@babel/traverse@^7.27.1":
"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.5":
version "7.28.5"
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz"
integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==
@@ -206,20 +162,7 @@
"@babel/types" "^7.28.5"
debug "^4.3.1"
"@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0":
version "7.29.0"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a"
integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==
dependencies:
"@babel/code-frame" "^7.29.0"
"@babel/generator" "^7.29.0"
"@babel/helper-globals" "^7.28.0"
"@babel/parser" "^7.29.0"
"@babel/template" "^7.28.6"
"@babel/types" "^7.29.0"
debug "^4.3.1"
"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.28.2", "@babel/types@^7.28.5":
"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5":
version "7.28.5"
resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz"
integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==
@@ -227,67 +170,59 @@
"@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.28.5"
"@babel/types@^7.28.6", "@babel/types@^7.29.0":
version "7.29.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7"
integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==
dependencies:
"@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.3.13":
version "2.3.13"
resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-2.3.13.tgz#966c015d8610137f65c97c081bf69a44b423963b"
integrity sha512-Fw7UsV0UAtWIBIm0M7g5CRerpu1eKyKAXIazzxhbXYUyMkwNrkX/KLkGI7b+uVDQ5cLUMfOC9vR60q9IDYDstA==
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.3.13"
"@biomejs/cli-darwin-x64" "2.3.13"
"@biomejs/cli-linux-arm64" "2.3.13"
"@biomejs/cli-linux-arm64-musl" "2.3.13"
"@biomejs/cli-linux-x64" "2.3.13"
"@biomejs/cli-linux-x64-musl" "2.3.13"
"@biomejs/cli-win32-arm64" "2.3.13"
"@biomejs/cli-win32-x64" "2.3.13"
"@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.3.13":
version "2.3.13"
resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.3.13.tgz#417fab5e8b2facf7e289f91d4bbe4275eb2dbbe8"
integrity sha512-0OCwP0/BoKzyJHnFdaTk/i7hIP9JHH9oJJq6hrSCPmJPo8JWcJhprK4gQlhFzrwdTBAW4Bjt/RmCf3ZZe59gwQ==
"@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.3.13":
version "2.3.13"
resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.3.13.tgz#05abe14ced10125091f68da38ec070f7827b6758"
integrity sha512-AGr8OoemT/ejynbIu56qeil2+F2WLkIjn2d8jGK1JkchxnMUhYOfnqc9sVzcRxpG9Ycvw4weQ5sprRvtb7Yhcw==
"@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.3.13":
version "2.3.13"
resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.3.13.tgz#aa715dbaf3d4cc97682bcb7357f0e15220321eea"
integrity sha512-TUdDCSY+Eo/EHjhJz7P2GnWwfqet+lFxBZzGHldrvULr59AgahamLs/N85SC4+bdF86EhqDuuw9rYLvLFWWlXA==
"@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.3.13":
version "2.3.13"
resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.3.13.tgz#e3463498bc23ddba306de3e45d8f9722179065e9"
integrity sha512-xvOiFkrDNu607MPMBUQ6huHmBG1PZLOrqhtK6pXJW3GjfVqJg0Z/qpTdhXfcqWdSZHcT+Nct2fOgewZvytESkw==
"@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.3.13":
version "2.3.13"
resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.3.13.tgz#579e81f862272ca5a2b9860a2204382767966b7d"
integrity sha512-0bdwFVSbbM//Sds6OjtnmQGp4eUjOTt6kHvR/1P0ieR9GcTUAlPNvPC3DiavTqq302W34Ae2T6u5VVNGuQtGlQ==
"@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.3.13":
version "2.3.13"
resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-2.3.13.tgz#fa22633de6effcd571fa2b7983cec98b9fce6383"
integrity sha512-s+YsZlgiXNq8XkgHs6xdvKDFOj/bwTEevqEY6rC2I3cBHbxXYU1LOZstH3Ffw9hE5tE1sqT7U23C00MzkXztMw==
"@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.3.13":
version "2.3.13"
resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.3.13.tgz#06dd89ec17b897e0c774612fbe83a19fabbb949e"
integrity sha512-QweDxY89fq0VvrxME+wS/BXKmqMrOTZlN9SqQ79kQSIc3FrEwvW/PvUegQF6XIVaekncDykB5dzPqjbwSKs9DA==
"@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.3.13":
version "2.3.13"
resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-2.3.13.tgz#55b8cf3e4a16712855ec0462cbdb3a6e645c9466"
integrity sha512-trDw2ogdM2lyav9WFQsdsfdVy1dvZALymRpgmWsvSez0BJzBjulhOT/t+wyKeh3pZWvwP3VMs1SoOKwO3wecMQ==
"@emotion/babel-plugin@^11.13.5":
version "11.13.5"
@@ -527,63 +462,62 @@
resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz"
integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==
"@formatjs/cli@^6.12.2":
version "6.12.2"
resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-6.12.2.tgz#0ca91899249f41860deb2b2921e6ad0a4db55de9"
integrity sha512-y215aarLZXei3u1WDRAiet/VajgvUXzvz4ifPENDSPXfIog0aBJKtFvIU7EWbcFWy7rstbn5GcwwQW4F1G3TJg==
"@formatjs/cli@^6.12.0":
version "6.12.0"
resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-6.12.0.tgz#8bfb1a500faf53fb220b46bc5c559e0f7acf4a27"
integrity sha512-mF3U8XxwEWR+ttlG5e4onYO+M5T22jnnQq7Ce/WK10CTVYR8Us433hbML6vgBLkiTS/MuCq61L0op3yNRSp2Kg==
"@formatjs/ecma402-abstract@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-3.1.1.tgz#329fa5eed8024ee389e9c82be8c798315631b11d"
integrity sha512-jhZbTwda+2tcNrs4kKvxrPLPjx8QsBCLCUgrrJ/S+G9YrGHWLhAyFMMBHJBnBoOwuLHd7L14FgYudviKaxkO2Q==
"@formatjs/ecma402-abstract@2.3.6":
version "2.3.6"
resolved "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz"
integrity sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==
dependencies:
"@formatjs/fast-memoize" "3.1.0"
"@formatjs/intl-localematcher" "0.8.1"
decimal.js "^10.6.0"
tslib "^2.8.1"
"@formatjs/fast-memoize" "2.2.7"
"@formatjs/intl-localematcher" "0.6.2"
decimal.js "^10.4.3"
tslib "^2.8.0"
"@formatjs/fast-memoize@3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-3.1.0.tgz#f8643d44803df8f579506d40804f4faeba6f5da2"
integrity sha512-b5mvSWCI+XVKiz5WhnBCY3RJ4ZwfjAidU0yVlKa3d3MSgKmH1hC3tBGEAtYyN5mqL7N0G5x0BOUYyO8CEupWgg==
"@formatjs/fast-memoize@2.2.7":
version "2.2.7"
resolved "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz"
integrity sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==
dependencies:
tslib "^2.8.1"
tslib "^2.8.0"
"@formatjs/icu-messageformat-parser@3.5.1":
version "3.5.1"
resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-3.5.1.tgz#a08faadbbb333d9e4fa7276c92a2b66a37788aa1"
integrity sha512-sSDmSvmmoVQ92XqWb499KrIhv/vLisJU8ITFrx7T7NZHUmMY7EL9xgRowAosaljhqnj/5iufG24QrdzB6X3ItA==
"@formatjs/icu-messageformat-parser@2.11.4":
version "2.11.4"
resolved "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz"
integrity sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==
dependencies:
"@formatjs/ecma402-abstract" "3.1.1"
"@formatjs/icu-skeleton-parser" "2.1.1"
tslib "^2.8.1"
"@formatjs/ecma402-abstract" "2.3.6"
"@formatjs/icu-skeleton-parser" "1.8.16"
tslib "^2.8.0"
"@formatjs/icu-skeleton-parser@2.1.1":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-2.1.1.tgz#a05b45733bd0f277c50f31b32e4a73375569d3c8"
integrity sha512-PSFABlcNefjI6yyk8f7nyX1DC7NHmq6WaCHZLySEXBrXuLOB2f935YsnzuPjlz+ibhb9yWTdPeVX1OVcj24w2Q==
"@formatjs/icu-skeleton-parser@1.8.16":
version "1.8.16"
resolved "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz"
integrity sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==
dependencies:
"@formatjs/ecma402-abstract" "3.1.1"
tslib "^2.8.1"
"@formatjs/ecma402-abstract" "2.3.6"
tslib "^2.8.0"
"@formatjs/intl-localematcher@0.8.1":
version "0.8.1"
resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.8.1.tgz#554fe5f8c746ba52d430674de9a242fae64f67ff"
integrity sha512-xwEuwQFdtSq1UKtQnyTZWC+eHdv7Uygoa+H2k/9uzBVQjDyp9r20LNDNKedWXll7FssT3GRHvqsdJGYSUWqYFA==
"@formatjs/intl-localematcher@0.6.2":
version "0.6.2"
resolved "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz"
integrity sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==
dependencies:
"@formatjs/fast-memoize" "3.1.0"
tslib "^2.8.1"
tslib "^2.8.0"
"@formatjs/intl@4.1.2":
version "4.1.2"
resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-4.1.2.tgz#4a0d487e6290067462f93d034ef36a8aaf6f671b"
integrity sha512-V60fNY/X/7zqmRffr7qPwscGmVGYDmlKF069mSQ2a/7fE22q602NtIfOQY8vzRA63Gr/O/U6vjRVBHMabrnA9A==
"@formatjs/intl@3.1.8":
version "3.1.8"
resolved "https://registry.npmjs.org/@formatjs/intl/-/intl-3.1.8.tgz"
integrity sha512-LWXgwI5zTMatvR8w8kCNh/priDTOF/ZssokMBHJ7ZWXFoYLVOYo0EJERD9Eajv+xsfQO1QkuAt77KWQ1OI4mOQ==
dependencies:
"@formatjs/ecma402-abstract" "3.1.1"
"@formatjs/fast-memoize" "3.1.0"
"@formatjs/icu-messageformat-parser" "3.5.1"
intl-messageformat "11.1.2"
tslib "^2.8.1"
"@formatjs/ecma402-abstract" "2.3.6"
"@formatjs/fast-memoize" "2.2.7"
"@formatjs/icu-messageformat-parser" "2.11.4"
intl-messageformat "10.7.18"
tslib "^2.8.0"
"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5":
version "0.3.13"
@@ -749,10 +683,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-beta.53":
version "1.0.0-beta.53"
resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz"
integrity sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==
"@rollup/rollup-android-arm-eabi@4.50.0":
version "4.50.0"
@@ -879,41 +813,41 @@
"@popperjs/core" "^2.11.8"
bootstrap "5.3.7"
"@tabler/icons-react@^3.36.1":
version "3.36.1"
resolved "https://registry.yarnpkg.com/@tabler/icons-react/-/icons-react-3.36.1.tgz#332d4407b5e2a9a783ce0a26567727aaedd5a9a8"
integrity sha512-/8nOXeNeMoze9xY/QyEKG65wuvRhkT3q9aytaur6Gj8bYU2A98YVJyLc9MRmc5nVvpy+bRlrrwK/Ykr8WGyUWg==
"@tabler/icons-react@^3.35.0":
version "3.35.0"
resolved "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-3.35.0.tgz"
integrity sha512-XG7t2DYf3DyHT5jxFNp5xyLVbL4hMJYJhiSdHADzAjLRYfL7AnjlRfiHDHeXxkb2N103rEIvTsBRazxXtAUz2g==
dependencies:
"@tabler/icons" ""
"@tabler/icons" "3.35.0"
"@tabler/icons@":
version "3.36.1"
resolved "https://registry.yarnpkg.com/@tabler/icons/-/icons-3.36.1.tgz#a893104b3c56e02458b13342abb6e466d4a81a8d"
integrity sha512-f4Jg3Fof/Vru5ioix/UO4GX+sdDsF9wQo47FbtvG+utIYYVQ/QVAC0QYgcBbAjQGfbdOh2CCf0BgiFOF9Ixtjw==
"@tabler/icons@3.35.0":
version "3.35.0"
resolved "https://registry.npmjs.org/@tabler/icons/-/icons-3.35.0.tgz"
integrity sha512-yYXe+gJ56xlZFiXwV9zVoe3FWCGuZ/D7/G4ZIlDtGxSx5CGQK110wrnT29gUj52kEZoxqF7oURTk97GQxELOFQ==
"@tanstack/query-core@5.90.20":
version "5.90.20"
resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.90.20.tgz#e12128e39210715d4ce4fb299c33498ac297771e"
integrity sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==
"@tanstack/query-core@5.90.6":
version "5.90.6"
resolved "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.6.tgz"
integrity sha512-AnZSLF26R8uX+tqb/ivdrwbVdGemdEDm1Q19qM6pry6eOZ6bEYiY7mWhzXT1YDIPTNEVcZ5kYP9nWjoxDLiIVw==
"@tanstack/query-devtools@5.93.0":
version "5.93.0"
resolved "https://registry.yarnpkg.com/@tanstack/query-devtools/-/query-devtools-5.93.0.tgz#517f61d4e2cfb9af671e34ad5e7e871052bca814"
integrity sha512-+kpsx1NQnOFTZsw6HAFCW3HkKg0+2cepGtAWXjiiSOJJ1CtQpt72EE2nyZb+AjAbLRPoeRmPJ8MtQd8r8gsPdg==
"@tanstack/query-devtools@5.92.0":
version "5.92.0"
resolved "https://registry.yarnpkg.com/@tanstack/query-devtools/-/query-devtools-5.92.0.tgz#8fc38b0112c6c136630f54e2f7e77f0c379e66c8"
integrity sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ==
"@tanstack/react-query-devtools@^5.91.3":
version "5.91.3"
resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-5.91.3.tgz#0f65340fa3f7e7d5575de928ad70cfa6b5f74ff1"
integrity sha512-nlahjMtd/J1h7IzOOfqeyDh5LNfG0eULwlltPEonYy0QL+nqrBB+nyzJfULV+moL7sZyxc2sHdNJki+vLA9BSA==
"@tanstack/react-query-devtools@^5.91.2":
version "5.91.2"
resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-5.91.2.tgz#1cadfad644b699b618c0636471d19339bda51ac7"
integrity sha512-ZJ1503ay5fFeEYFUdo7LMNFzZryi6B0Cacrgr2h1JRkvikK1khgIq6Nq2EcblqEdIlgB/r7XDW8f8DQ89RuUgg==
dependencies:
"@tanstack/query-devtools" "5.93.0"
"@tanstack/query-devtools" "5.92.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.6":
version "5.90.6"
resolved "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.6.tgz"
integrity sha512-gB1sljYjcobZKxjPbKSa31FUTyr+ROaBdoH+wSSs9Dk+yDCmMs+TkTV3PybRRVLC7ax7q0erJ9LvRWnMktnRAw==
dependencies:
"@tanstack/query-core" "5.90.20"
"@tanstack/query-core" "5.90.6"
"@tanstack/react-table@^8.21.3":
version "8.21.3"
@@ -1111,10 +1045,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 || 17 || 18 || 19", "@types/react@>=16.9.11", "@types/react@^19.2.7":
version "19.2.7"
resolved "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz"
integrity sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==
dependencies:
csstype "^3.2.2"
@@ -1159,15 +1093,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.2":
version "5.1.2"
resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz"
integrity sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==
dependencies:
"@babel/core" "^7.29.0"
"@babel/core" "^7.28.5"
"@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-beta.53"
"@types/babel__core" "^7.20.5"
react-refresh "^0.18.0"
@@ -1383,10 +1317,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.5.21:
version "1.5.21"
resolved "https://registry.npmjs.org/country-flag-icons/-/country-flag-icons-1.5.21.tgz"
integrity sha512-0KmU4oeiyAM+F+atzK99ghQDQJKxEY3tiDhnRraVFL4o65rZgrmrx7xKi0b+hxcVpcEpuUbu+KCC6TKTZQTDcA==
css.escape@^1.5.1:
version "1.5.1"
@@ -1410,9 +1344,9 @@ debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
dependencies:
ms "^2.1.3"
decimal.js@^10.6.0:
decimal.js@^10.4.3:
version "10.6.0"
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a"
resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz"
integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==
decode-named-character-reference@^1.0.0:
@@ -1590,10 +1524,10 @@ find-root@^1.1.0:
resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz"
integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
formik@^2.4.9:
version "2.4.9"
resolved "https://registry.yarnpkg.com/formik/-/formik-2.4.9.tgz#7e5b81e9c9e215d0ce2ac8fed808cf7fba0cd204"
integrity sha512-5nI94BMnlFDdQRBY4Sz39WkhxajZJ57Fzs8wVbtsQlm5ScKIR1QLYqv/ultBnobObtlUyxpxoLodpixrsf36Og==
formik@^2.4.6:
version "2.4.6"
resolved "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz"
integrity sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g==
dependencies:
"@types/hoist-non-react-statics" "^3.3.1"
deepmerge "^2.1.1"
@@ -1632,10 +1566,10 @@ 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.3.9:
version "20.3.9"
resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-20.3.9.tgz#7f7f3dc904660e32f5abecf3efaa57bd9d36f6f8"
integrity sha512-OIoj0PcK2JaxQuANHxWkxFRSNXAuSgO1vCzCT66KItE0W/ieZLG+/iW8OetlxB+F9EaPB7DoFYKAubFG1f4Mvw==
dependencies:
"@types/node" ">=20.0.0"
"@types/whatwg-mimetype" "^3.0.2"
@@ -1815,15 +1749,15 @@ inline-style-parser@0.2.4:
resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz"
integrity sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==
intl-messageformat@11.1.2:
version "11.1.2"
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-11.1.2.tgz#c72879165d15633f38b092479822c5d831c21ac5"
integrity sha512-ucSrQmZGAxfiBHfBRXW/k7UC8MaGFlEj4Ry1tKiDcmgwQm1y3EDl40u+4VNHYomxJQMJi9NEI3riDRlth96jKg==
intl-messageformat@10.7.18:
version "10.7.18"
resolved "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.18.tgz"
integrity sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==
dependencies:
"@formatjs/ecma402-abstract" "3.1.1"
"@formatjs/fast-memoize" "3.1.0"
"@formatjs/icu-messageformat-parser" "3.5.1"
tslib "^2.8.1"
"@formatjs/ecma402-abstract" "2.3.6"
"@formatjs/fast-memoize" "2.2.7"
"@formatjs/icu-messageformat-parser" "2.11.4"
tslib "^2.8.0"
invariant@^2.2.4:
version "2.2.4"
@@ -2489,10 +2423,10 @@ react-bootstrap@^2.10.10:
uncontrollable "^7.2.1"
warning "^4.0.3"
react-dom@^19.2.4:
version "19.2.4"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.4.tgz#6fac6bd96f7db477d966c7ec17c1a2b1ad8e6591"
integrity sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==
react-dom@^19.2.3:
version "19.2.3"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz"
integrity sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==
dependencies:
scheduler "^0.27.0"
@@ -2501,18 +2435,19 @@ react-fast-compare@^2.0.1:
resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz"
integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
react-intl@^8.1.3:
version "8.1.3"
resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-8.1.3.tgz#216e0a916c40a535c590995c3103fe9e2525d2e4"
integrity sha512-eL1/d+uQdnapirynOGAriW0K9uAoyarjRGL3V9LaTRuohNSvPgCfJX06EZl5M52h/Hu7Gz7A1sD7dNHcos1lNg==
react-intl@^7.1.14:
version "7.1.14"
resolved "https://registry.npmjs.org/react-intl/-/react-intl-7.1.14.tgz"
integrity sha512-VE/0Wi/lHJlBC7APQpCzLUdIt3GB5B0GZrRW8Q+ACbkHI4j+Wwgg9J1TniN6zmLHmPH5gxXcMy+fkSPfw5p1WQ==
dependencies:
"@formatjs/ecma402-abstract" "3.1.1"
"@formatjs/icu-messageformat-parser" "3.5.1"
"@formatjs/intl" "4.1.2"
"@formatjs/ecma402-abstract" "2.3.6"
"@formatjs/icu-messageformat-parser" "2.11.4"
"@formatjs/intl" "3.1.8"
"@types/hoist-non-react-statics" "^3.3.1"
"@types/react" "16 || 17 || 18 || 19"
hoist-non-react-statics "^3.3.2"
intl-messageformat "11.1.2"
tslib "^2.8.1"
intl-messageformat "10.7.18"
tslib "^2.8.0"
react-is@^16.13.1, react-is@^16.3.2, react-is@^16.7.0:
version "16.13.1"
@@ -2551,17 +2486,17 @@ react-refresh@^0.18.0:
resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz"
integrity sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==
react-router-dom@^7.13.0:
version "7.13.0"
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.13.0.tgz#8b5f7204fadca680f0e94f207c163f0dcd1cfdf5"
integrity sha512-5CO/l5Yahi2SKC6rGZ+HDEjpjkGaG/ncEP7eWFTvFxbHP8yeeI0PxTDjimtpXYlR3b3i9/WIL4VJttPrESIf2g==
react-router-dom@^7.9.5:
version "7.9.5"
resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.5.tgz"
integrity sha512-mkEmq/K8tKN63Ae2M7Xgz3c9l9YNbY+NHH6NNeUmLA3kDkhKXRsNb/ZpxaEunvGo2/3YXdk5EJU3Hxp3ocaBPw==
dependencies:
react-router "7.13.0"
react-router "7.9.5"
react-router@7.13.0:
version "7.13.0"
resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.13.0.tgz#de9484aee764f4f65b93275836ff5944d7f5bd3b"
integrity sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==
react-router@7.9.5:
version "7.9.5"
resolved "https://registry.npmjs.org/react-router/-/react-router-7.9.5.tgz"
integrity sha512-JmxqrnBZ6E9hWmf02jzNn9Jm3UqyeimyiwzD69NjxGySG6lIz/1LVPsoTCwN7NBX2XjCEa1LIX5EMz1j2b6u6A==
dependencies:
cookie "^1.0.1"
set-cookie-parser "^2.6.0"
@@ -2598,10 +2533,10 @@ react-transition-group@^4.3.0, react-transition-group@^4.4.5:
loose-envify "^1.4.0"
prop-types "^15.6.2"
react@^19.2.4:
version "19.2.4"
resolved "https://registry.yarnpkg.com/react/-/react-19.2.4.tgz#438e57baa19b77cb23aab516cf635cd0579ee09a"
integrity sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==
react@^19.2.3:
version "19.2.3"
resolved "https://registry.npmjs.org/react/-/react-19.2.3.tgz"
integrity sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==
readdirp@^4.0.1:
version "4.1.2"
@@ -2731,10 +2666,10 @@ rollup@^4.43.0:
"@rollup/rollup-win32-x64-msvc" "4.50.0"
fsevents "~2.3.2"
rooks@^9.5.0:
version "9.5.0"
resolved "https://registry.yarnpkg.com/rooks/-/rooks-9.5.0.tgz#bbe15fdf64fff44b9a1750cc913de3401572f012"
integrity sha512-AtmaX8yjQkJAW7EXW+UU481bpGwuk455hjD/aEUuy7N7VjvXlNmO8BErQ+jEUQp1DRA/PTWonv+Dq1nEkJdgkw==
rooks@^9.3.0:
version "9.3.0"
resolved "https://registry.npmjs.org/rooks/-/rooks-9.3.0.tgz"
integrity sha512-ez9ReItW+a/GXsA92Lfh5KWTjhbzlp354KOlC5oh9RHVD5fs/GaWwBq72F2xkDXVblgCgFs0Nel1hxojtszhgw==
dependencies:
fast-deep-equal "^3.1.3"
lodash.debounce "^4.0.8"
@@ -2906,7 +2841,7 @@ tsconfck@^3.0.3:
resolved "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz"
integrity sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==
tslib@^2.0.0, tslib@^2.8.0, tslib@^2.8.1:
tslib@^2.0.0, tslib@^2.8.0:
version "2.8.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==

View File

@@ -1,4 +1,4 @@
FROM cypress/included:15.9.0
FROM cypress/included:14.0.1
# Disable Cypress CLI colors
ENV FORCE_COLOR=0

View File

@@ -24,10 +24,10 @@ describe('Streams', () => {
// Create a custom cert pair
cy.exec('mkcert -cert-file=/test/cypress/fixtures/website1.pem -key-file=/test/cypress/fixtures/website1.key.pem website1.example.com').then((result) => {
expect(result.exitCode).to.eq(0);
expect(result.code).to.eq(0);
// Install CA
cy.exec('mkcert -install').then((result) => {
expect(result.exitCode).to.eq(0);
expect(result.code).to.eq(0);
});
});
@@ -56,7 +56,7 @@ describe('Streams', () => {
expect(data).to.have.property('udp_forwarding', false);
cy.exec('curl --noproxy -- http://website1.example.com:1500').then((result) => {
expect(result.exitCode).to.eq(0);
expect(result.code).to.eq(0);
expect(result.stdout).to.contain('yay it works');
});
});
@@ -107,7 +107,7 @@ describe('Streams', () => {
expect(data).to.have.property('udp_forwarding', true);
cy.exec('curl --noproxy -- http://website1.example.com:1502').then((result) => {
expect(result.exitCode).to.eq(0);
expect(result.code).to.eq(0);
expect(result.stdout).to.contain('yay it works');
});
});
@@ -176,7 +176,6 @@ describe('Streams', () => {
'cert_chain_of_trust',
'cert_extlifeSpan',
'cert_revocation',
'engine_problem',
'overall_grade',
];

View File

@@ -1,9 +1,9 @@
import axios from "axios";
import logger from "./logger.mjs";
const logger = require('./logger');
const axios = require('axios').default;
const BackendApi = function (config, token) {
const BackendApi = function(config, token) {
this.config = config;
this.token = token;
this.token = token;
this.axios = axios.create({
baseURL: config.baseUrl,
@@ -14,24 +14,26 @@ const BackendApi = function (config, token) {
/**
* @param {string} token
*/
BackendApi.prototype.setToken = function (token) {
BackendApi.prototype.setToken = function(token) {
this.token = token;
};
/**
* @param {bool} returnOnError
*/
BackendApi.prototype._prepareOptions = function (returnOnError) {
const options = {
BackendApi.prototype._prepareOptions = function(returnOnError) {
let options = {
headers: {
Accept: "application/json",
},
};
Accept: 'application/json'
}
}
if (this.token) {
options.headers.Authorization = `Bearer ${this.token}`;
options.headers.Authorization = 'Bearer ' + this.token;
}
if (returnOnError) {
options.validateStatus = () => true;
options.validateStatus = function () {
return true;
}
}
return options;
};
@@ -42,30 +44,13 @@ BackendApi.prototype._prepareOptions = function (returnOnError) {
* @param {function} reject
* @param {bool} returnOnError
*/
BackendApi.prototype._handleResponse = (
response,
resolve,
reject,
returnOnError,
) => {
logger("Response data:", response.data);
if (
!returnOnError &&
typeof response.data === "object" &&
typeof response.data.error === "object"
) {
if (
typeof response.data === "object" &&
typeof response.data.error === "object" &&
typeof response.data.error.message !== "undefined"
) {
reject(
new Error(
`${response.data.error.code}: ${response.data.error.message}`,
),
);
BackendApi.prototype._handleResponse = function(response, resolve, reject, returnOnError) {
logger('Response data:', response.data);
if (!returnOnError && typeof response.data === 'object' && typeof response.data.error === 'object') {
if (typeof response.data === 'object' && typeof response.data.error === 'object' && typeof response.data.error.message !== 'undefined') {
reject(new Error(response.data.error.code + ': ' + response.data.error.message));
} else {
reject(new Error(`Error ${response.status}`));
reject(new Error('Error ' + response.status));
}
} else {
resolve(response.data);
@@ -78,10 +63,10 @@ BackendApi.prototype._handleResponse = (
* @param {function} reject
* @param {bool} returnOnError
*/
BackendApi.prototype._handleError = (err, resolve, reject, returnOnError) => {
logger("Axios Error:", err);
BackendApi.prototype._handleError = function(err, resolve, reject, returnOnError) {
logger('Axios Error:', err);
if (returnOnError) {
resolve(typeof err.response.data !== "undefined" ? err.response.data : err);
resolve(typeof err.response.data !== 'undefined' ? err.response.data : err);
} else {
reject(err);
}
@@ -99,11 +84,11 @@ BackendApi.prototype.request = function (method, path, returnOnError, data) {
const options = this._prepareOptions(returnOnError);
return new Promise((resolve, reject) => {
const opts = {
let opts = {
method: method,
url: path,
...options,
};
...options
}
if (data !== undefined && data !== null) {
opts.data = data;
}
@@ -125,17 +110,16 @@ BackendApi.prototype.request = function (method, path, returnOnError, data) {
* @returns {Promise<object>}
*/
BackendApi.prototype.postForm = function (path, form, returnOnError) {
logger("POST", this.config.baseUrl + path);
logger('POST', this.config.baseUrl + path);
const options = this._prepareOptions(returnOnError);
return new Promise((resolve, reject) => {
const opts = {
...options,
...form.getHeaders(),
};
}
this.axios
.post(path, form, opts)
this.axios.post(path, form, opts)
.then((response) => {
this._handleResponse(response, resolve, reject, returnOnError);
})
@@ -145,4 +129,4 @@ BackendApi.prototype.postForm = function (path, form, returnOnError) {
});
};
export default BackendApi;
module.exports = BackendApi;

View File

@@ -0,0 +1,7 @@
const _ = require("lodash");
module.exports = function() {
let arr = _.values(arguments);
arr.unshift('[Backend API]');
console.log.apply(null, arr);
};

View File

@@ -1,7 +0,0 @@
const log = (...args) => {
const arr = args;
arr.unshift("[Backend API]");
console.log(...arr);
};
export default log;

View File

@@ -1,12 +1,13 @@
import fs from "node:fs";
import FormData from "form-data";
import Client from "./client.mjs";
import logger from "./logger.mjs";
const fs = require('fs');
const FormData = require('form-data');
const logger = require('./logger');
const Client = require('./client');
export default (config) => {
logger("Client Ready using", config.baseUrl);
module.exports = function (config) {
logger('Client Ready using', config.baseUrl);
return {
/**
* @param {object} options
* @param {string} options.path API path
@@ -17,7 +18,7 @@ export default (config) => {
backendApiGet: (options) => {
const api = new Client(config);
api.setToken(options.token);
return api.request("get", options.path, options.returnOnError || false);
return api.request('get', options.path, options.returnOnError || false);
},
/**
@@ -31,12 +32,7 @@ export default (config) => {
backendApiPost: (options) => {
const api = new Client(config);
api.setToken(options.token);
return api.request(
"post",
options.path,
options.returnOnError || false,
options.data,
);
return api.request('post', options.path, options.returnOnError || false, options.data);
},
/**
@@ -52,11 +48,8 @@ export default (config) => {
api.setToken(options.token);
const form = new FormData();
for (const [key, value] of Object.entries(options.files)) {
form.append(
key,
fs.createReadStream(`${config.fixturesFolder}/${value}`),
);
for (let [key, value] of Object.entries(options.files)) {
form.append(key, fs.createReadStream(config.fixturesFolder + '/' + value));
}
return api.postForm(options.path, form, options.returnOnError || false);
},
@@ -72,12 +65,7 @@ export default (config) => {
backendApiPut: (options) => {
const api = new Client(config);
api.setToken(options.token);
return api.request(
"put",
options.path,
options.returnOnError || false,
options.data,
);
return api.request('put', options.path, options.returnOnError || false, options.data);
},
/**
@@ -90,11 +78,7 @@ export default (config) => {
backendApiDelete: (options) => {
const api = new Client(config);
api.setToken(options.token);
return api.request(
"delete",
options.path,
options.returnOnError || false,
);
},
return api.request('delete', options.path, options.returnOnError || false);
}
};
};

View File

@@ -1,26 +1,20 @@
import { SwaggerValidation } from "@jc21/cypress-swagger-validation";
import chalk from "chalk";
import backendTask from "./backendApi/task.mjs";
import { SwaggerValidation } from '@jc21/cypress-swagger-validation';
import chalk from 'chalk';
export default (on, config) => {
// Replace swaggerBase config var wildcard
if (typeof config.env.swaggerBase !== "undefined") {
config.env.swaggerBase = config.env.swaggerBase.replace(
"{{baseUrl}}",
config.baseUrl,
);
if (typeof config.env.swaggerBase !== 'undefined') {
config.env.swaggerBase = config.env.swaggerBase.replace('{{baseUrl}}', config.baseUrl);
}
// Plugin Events
on("task", SwaggerValidation(config));
on("task", backendTask(config));
on("task", {
on('task', SwaggerValidation(config));
on('task', require('./backendApi/task')(config));
on('task', {
log(message) {
console.log(
`${chalk.cyan.bold("[")}${chalk.blue.bold("LOG")}${chalk.cyan.bold("]")} ${chalk.red.bold(message)}`,
);
console.log(`${chalk.cyan.bold('[')}${chalk.blue.bold('LOG')}${chalk.cyan.bold(']')} ${chalk.red.bold(message)}`);
return null;
},
}
});
return config;

View File

@@ -35,7 +35,7 @@ Cypress.Commands.add("validateSwaggerFile", (url, savePath) => {
.then((response) => cy.writeFile(savePath, response.body, { log: false }))
.then(() => cy.exec(`yarn swagger-lint '${savePath}'`, { failOnNonZeroExit: false }))
.then((result) => cy.task('log', `Swagger Vacuum Results:\n${result.stdout || ''}`)
.then(() => expect(result.exitCode).to.eq(0)));
.then(() => expect(result.code).to.eq(0)));
});
});

View File

@@ -1,4 +1,4 @@
import './commands.mjs';
import './commands';
Cypress.on('uncaught:exception', (/*err, runnable*/) => {
// returning false here prevents Cypress from

View File

@@ -4,10 +4,6 @@
"cypress/**/*.js",
"cypress/config/dev.mjs",
"cypress/config/ci.mjs",
"cypress/plugins/index.mjs",
"cypress/plugins/backendApi/task.mjs",
"cypress/plugins/backendApi/logger.mjs",
"cypress/plugins/backendApi/client.mjs",
"cypress/support/commands.mjs"
"cypress/plugins/index.mjs"
]
}

View File

@@ -5,7 +5,7 @@
"main": "index.js",
"dependencies": {
"@jc21/cypress-swagger-validation": "^0.3.2",
"@quobix/vacuum": "^0.23.4",
"@quobix/vacuum": "^0.19.4",
"axios": "^1.13.1",
"chalk": "^5.6.2",
"cypress": "^15.9.0",

View File

@@ -125,10 +125,10 @@
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/js@9.39.0":
version "9.39.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.0.tgz#e1955cefd1d79e80a9557274e9aa9bd3f641be01"
integrity sha512-BIhe0sW91JGPiaF1mOuPy5v8NflqfjIcDNpC+LbW9f609WVRX1rArrhi6Z2ymvrAry9jw+5POTj4t2t62o8Bmw==
"@eslint/object-schema@^2.1.7":
version "2.1.7"
@@ -183,13 +183,6 @@
wrap-ansi "^8.1.0"
wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
"@isaacs/fs-minipass@^4.0.0":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32"
integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==
dependencies:
minipass "^7.0.4"
"@jc21/cypress-swagger-validation@^0.3.2":
version "0.3.2"
resolved "https://registry.yarnpkg.com/@jc21/cypress-swagger-validation/-/cypress-swagger-validation-0.3.2.tgz#6d1cd6c702405caf7661398b662de84a3fa50f8e"
@@ -216,14 +209,13 @@
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
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==
"@quobix/vacuum@^0.19.4":
version "0.19.4"
resolved "https://registry.yarnpkg.com/@quobix/vacuum/-/vacuum-0.19.4.tgz#1250269268aa0838e503ea97836a98d7c9756bf1"
integrity sha512-+riEvta1fR2loK//bpdPOVs5AgE8F26RrKe6/oGjapAKVB/OOcqE88S+TSe/yeQbmj03QLi5EX3ZmrL9n0qyDg==
dependencies:
https-proxy-agent "^7.0.6"
node-fetch "^3.3.2"
tar "^7.5.2"
node-fetch "^3.2.10"
tar "^6.1.11"
"@types/color-name@^1.1.1":
version "1.1.1"
@@ -272,16 +264,16 @@ acorn-jsx@^5.3.2:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.11.3:
version "8.11.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
acorn@^8.15.0:
version "8.15.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816"
integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
agent-base@^7.1.2:
version "7.1.4"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8"
integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==
aggregate-error@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
@@ -312,7 +304,7 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.17.1, ajv@^8.6.3:
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==
@@ -322,6 +314,16 @@ ajv@^8.0.0, ajv@^8.17.1, ajv@^8.6.3:
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
ajv@^8.6.3:
version "8.13.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91"
integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==
dependencies:
fast-deep-equal "^3.1.3"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.4.1"
ansi-colors@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
@@ -423,10 +425,19 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c"
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==
axios@^1.13.1:
version "1.13.1"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.1.tgz#45b62dc8fe04e0e92274e08b98e910ba3d7963a7"
integrity sha512-hU4EGxxt+j7TQijx1oYdAjw4xuIp1wRQSsbMFwSthCWeBQur1eF+qJ5iQ5sN3Tw8YRzQNKb8jszgBdMDVqwJcw==
dependencies:
follow-redirects "^1.15.6"
form-data "^4.0.4"
proxy-from-env "^1.1.0"
axios@^1.7.7:
version "1.12.0"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.12.0.tgz#11248459be05a5ee493485628fa0e4323d0abfc3"
integrity sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==
dependencies:
follow-redirects "^1.15.6"
form-data "^4.0.4"
@@ -558,10 +569,10 @@ chokidar@^4.0.1:
dependencies:
readdirp "^4.0.1"
chownr@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4"
integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==
chownr@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
ci-info@^4.1.0:
version "4.2.0"
@@ -748,13 +759,6 @@ dayjs@^1.10.4:
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2"
integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==
debug@4:
version "4.4.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
dependencies:
ms "^2.1.3"
debug@^3.1.0:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
@@ -900,9 +904,9 @@ 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.2.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-5.2.0.tgz#c01cc5511542b5eaa38d31bcdfe888336bf70611"
integrity sha512-vuCUBQloUSILxtJrUWV39vNIQPlbg0L7cTunEAzvaUzv9LFZZym+KFLH18n9j2cZuFPdlxOqTubCvg5se0DyGw==
dependencies:
globals "^16.2.0"
@@ -919,15 +923,20 @@ 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.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb"
integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
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@^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==
version "9.39.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.0.tgz#33c90ddf62b64e1e3f83b689934b336f21b5f0e5"
integrity sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==
dependencies:
"@eslint-community/eslint-utils" "^4.8.0"
"@eslint-community/regexpp" "^4.12.1"
@@ -935,7 +944,7 @@ eslint@^9.39.0:
"@eslint/config-helpers" "^0.4.2"
"@eslint/core" "^0.17.0"
"@eslint/eslintrc" "^3.3.1"
"@eslint/js" "9.39.2"
"@eslint/js" "9.39.0"
"@eslint/plugin-kit" "^0.4.1"
"@humanfs/node" "^0.16.6"
"@humanwhocodes/module-importer" "^1.0.1"
@@ -964,7 +973,16 @@ eslint@^9.39.0:
natural-compare "^1.4.0"
optionator "^0.9.3"
espree@^10.0.1, espree@^10.4.0:
espree@^10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-10.0.1.tgz#600e60404157412751ba4a6f3a2ee1a42433139f"
integrity sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==
dependencies:
acorn "^8.11.3"
acorn-jsx "^5.3.2"
eslint-visitor-keys "^4.0.0"
espree@^10.4.0:
version "10.4.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837"
integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==
@@ -1169,9 +1187,9 @@ forever-agent@~0.6.1:
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
form-data@^4.0.4, 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==
version "4.0.4"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4"
integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
@@ -1196,6 +1214,13 @@ fs-extra@^9.1.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
fs-minipass@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
dependencies:
minipass "^3.0.0"
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
@@ -1336,14 +1361,6 @@ http-signature@~1.4.0:
jsprim "^2.0.2"
sshpk "^1.18.0"
https-proxy-agent@^7.0.6:
version "7.0.6"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9"
integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==
dependencies:
agent-base "^7.1.2"
debug "4"
human-signals@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
@@ -1397,7 +1414,14 @@ is-fullwidth-code-point@^3.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-glob@^4.0.0, is-glob@^4.0.3:
is-glob@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
dependencies:
is-extglob "^2.1.1"
is-glob@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
@@ -1671,17 +1695,35 @@ minimist@^1.2.8:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.2:
minipass@^3.0.0:
version "3.3.6"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
dependencies:
yallist "^4.0.0"
minipass@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
minizlib@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.1.0.tgz#6ad76c3a8f10227c9b51d1c9ac8e30b27f5a251c"
integrity sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==
minizlib@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
dependencies:
minipass "^7.1.2"
minipass "^3.0.0"
yallist "^4.0.0"
mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mkdirp@^3.0.0:
version "3.0.1"
@@ -1700,9 +1742,9 @@ mocha-junit-reporter@^2.2.1:
xml "^1.0.1"
mocha@^11.7.4:
version "11.7.5"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.7.5.tgz#58f5bbfa5e0211ce7e5ee6128107cefc2515a627"
integrity sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==
version "11.7.4"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.7.4.tgz#f161b17aeccb0762484b33bdb3f7ab9410ba5c82"
integrity sha512-1jYAaY8x0kAZ0XszLWu14pzsf4KV740Gld4HXkhNTXwcHx4AUEDkPzgEHg9CM5dVcW+zv036tjpsEbLraPJj4w==
dependencies:
browser-stdout "^1.3.1"
chokidar "^4.0.1"
@@ -1726,7 +1768,12 @@ mocha@^11.7.4:
yargs-parser "^21.1.1"
yargs-unparser "^2.0.0"
ms@^2.1.1, ms@^2.1.3:
ms@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@^2.1.3:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
@@ -1741,7 +1788,7 @@ node-domexception@^1.0.0:
resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
node-fetch@^3.3.2:
node-fetch@^3.2.10:
version "3.3.2"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b"
integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==
@@ -1871,7 +1918,12 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
picocolors@^1.1.0, picocolors@^1.1.1:
picocolors@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
@@ -2217,16 +2269,17 @@ systeminformation@^5.27.14:
resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.30.6.tgz#c100cb632bbb955fc44ba033f624da22c3a6a5be"
integrity sha512-LEIyK1aEv5P3BhAPW3swdlIyCihxwEq/Gki+kcONieU4PIeRCSLDuGkk0Va/56PSBgjVgEksOM88dmY6YqOyfQ==
tar@^7.5.2:
version "7.5.7"
resolved "https://registry.yarnpkg.com/tar/-/tar-7.5.7.tgz#adf99774008ba1c89819f15dbd6019c630539405"
integrity sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==
tar@^6.1.11:
version "6.2.1"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a"
integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
dependencies:
"@isaacs/fs-minipass" "^4.0.0"
chownr "^3.0.0"
minipass "^7.1.2"
minizlib "^3.1.0"
yallist "^5.0.0"
chownr "^2.0.0"
fs-minipass "^2.0.0"
minipass "^5.0.0"
minizlib "^2.1.1"
mkdirp "^1.0.3"
yallist "^4.0.0"
throttleit@^1.0.0:
version "1.0.0"
@@ -2330,6 +2383,13 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
uri-js@^4.4.1:
version "4.4.1"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
dependencies:
punycode "^2.1.0"
uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
@@ -2422,10 +2482,10 @@ y18n@^5.0.5:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
yallist@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533"
integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yargs-parser@^21.1.1:
version "21.1.1"