From eca41e53c92bb42f1563fd0c9ee0dbc2aeb120ea Mon Sep 17 00:00:00 2001 From: Pedro Lopes Date: Tue, 10 Dec 2024 03:10:25 -0300 Subject: [PATCH 01/12] feat: add generic oidc sso option --- webapps/console/lib/nextauth.config.ts | 6 ++- webapps/console/lib/oidc.ts | 59 ++++++++++++++++++++++++++ webapps/console/pages/signin.tsx | 39 +++++++++++++++-- 3 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 webapps/console/lib/oidc.ts diff --git a/webapps/console/lib/nextauth.config.ts b/webapps/console/lib/nextauth.config.ts index 1b45c6f23..99eef622c 100644 --- a/webapps/console/lib/nextauth.config.ts +++ b/webapps/console/lib/nextauth.config.ts @@ -2,6 +2,7 @@ import GithubProvider from "next-auth/providers/github"; import CredentialsProvider from "next-auth/providers/credentials"; import { NextAuthOptions, User } from "next-auth"; import { db } from "./server/db"; +import { OIDCConfig, OIDCProfile, OIDCProvider } from "./oidc"; import { checkHash, createHash, hash, requireDefined } from "juava"; import { ApiError } from "./shared/errors"; import { getServerLog } from "./server/log"; @@ -15,6 +16,7 @@ const crypto = require("crypto"); const log = getServerLog("auth"); export const githubLoginEnabled = !!process.env.GITHUB_CLIENT_ID; +export const oidcLoginConfig = JSON.parse(process.env.AUTH_OIDC_PROVIDER as string) as OIDCConfig; export const credentialsLoginEnabled = isTruish(process.env.ENABLE_CREDENTIALS_LOGIN) || !!(process.env.SEED_USER_EMAIL && process.env.SEED_USER_PASSWORD); @@ -25,6 +27,8 @@ const githubProvider = githubLoginEnabled }) : undefined; +const oidcProvider = oidcLoginConfig ? OIDCProvider(oidcLoginConfig) : undefined; + function toId(email: string) { return hash("sha256", email.toLowerCase().trim()); } @@ -143,7 +147,7 @@ function generateSecret(base: (string | undefined)[]) { export const nextAuthConfig: NextAuthOptions = { // Configure one or more authentication providers - providers: [githubProvider, credentialsProvider].filter(provider => !!provider) as any, + providers: [githubProvider, oidcProvider, credentialsProvider].filter(provider => !!provider) as any, pages: { error: "/error/auth", // Error code passed in query string as ?error= signIn: "/signin", // Displays signin buttons diff --git a/webapps/console/lib/oidc.ts b/webapps/console/lib/oidc.ts new file mode 100644 index 000000000..e7611ce0a --- /dev/null +++ b/webapps/console/lib/oidc.ts @@ -0,0 +1,59 @@ +import type { OAuthConfig, OAuthUserConfig } from "next-auth/src/providers"; +import { ApiError } from "./shared/errors"; + +export interface OIDCProfile extends Record { + sub: string; + name: string; + preferred_username: string; + nickname: string; + email: string; + picture: string; +} + +export type OIDCConfig

= OAuthUserConfig

& Required, "issuer">>; + +/** + * Creates an OAuth configuration for an OpenID Connect (OIDC) Discovery compliant provider. + * + * @template P - The type of the profile, extending `OIDCProfile`. + * + * @param {OIDCConfig

} options - The user configuration options for OAuth authentication. + * + * @returns {OAuthConfig

} - An OIDC provider NextAuthJS valid configuration. + * + * @throws {ApiError} - Throws an error if the required fields `issuer`, `clientId`, or `clientSecret` + * are not provided in the options parameter. + * + * @description + * Initializes an OAuth configuration object for a generic OIDC provider that is compliant with the OIDC Discovery. It requires + * the `issuer` (the issuer domain in valid URL format), `clientId`, and `clientSecret` fields in the options. This configuration + * includes default settings for handling the PKCE and state checks and provides + * a profile extraction mechanism. + * + * The well-known configuration endpoint for the provider is automatically set based on the issuer, and + * the default authorization request includes scopes for OpenID, email, and profile information. + */ +export function OIDCProvider

(options: OIDCConfig

): OAuthConfig

{ + if (!options.issuer || !options.clientId || !options.clientSecret) { + throw new ApiError("Malformed OIDC config: issuer, clientId, and clientSecret are required"); + } + + return { + id: "oidc", + name: "OIDC", + wellKnown: `${options.issuer}/.well-known/openid-configuration`, + type: "oauth", + authorization: { params: { scope: "openid email profile" } }, + checks: ["pkce", "state"], + idToken: true, + profile(profile) { + return { + id: profile.sub, + name: profile.name ?? profile.preferred_username ?? profile.nickname, + email: profile.email, + image: profile.picture, + }; + }, + options, + }; +} diff --git a/webapps/console/pages/signin.tsx b/webapps/console/pages/signin.tsx index 92b6773e2..015fd5a0f 100644 --- a/webapps/console/pages/signin.tsx +++ b/webapps/console/pages/signin.tsx @@ -4,12 +4,12 @@ import { Button, Input } from "antd"; import { useAppConfig } from "../lib/context"; import { AlertTriangle } from "lucide-react"; import Link from "next/link"; -import { GithubOutlined } from "@ant-design/icons"; +import { GithubOutlined, KeyOutlined } from "@ant-design/icons"; import React, { useState } from "react"; import { feedbackError } from "../lib/ui"; import { useRouter } from "next/router"; import { branding } from "../lib/branding"; -import { credentialsLoginEnabled, githubLoginEnabled } from "../lib/nextauth.config"; +import { credentialsLoginEnabled, githubLoginEnabled, oidcLoginConfig } from "../lib/nextauth.config"; import { useQuery } from "@tanstack/react-query"; function JitsuLogo() { @@ -92,7 +92,34 @@ function GitHubSignIn() { ); } -const NextAuthSignInPage = ({ csrfToken, providers: { github, credentials } }) => { +function OIDCSignIn() { + const [loading, setLoading] = useState(false); + const router = useRouter(); + return ( +

+ +
+ ); +} + +const NextAuthSignInPage = ({ csrfToken, providers: { github, oidc, credentials } }) => { const router = useRouter(); const nextAuthSession = useSession(); const app = useAppConfig(); @@ -119,8 +146,9 @@ const NextAuthSignInPage = ({ csrfToken, providers: { github, credentials } }) =
{credentials.enabled && } - {credentials.enabled && github.enabled &&
} + {credentials.enabled && (github.enabled || oidc.enabled) &&
} {github.enabled && } + {oidc.enabled && }
{router.query.error && (
@@ -155,6 +183,9 @@ export async function getServerSideProps(context) { github: { enabled: githubLoginEnabled, }, + oidc: { + enabled: !!oidcLoginConfig, + }, }, publicPage: true, }, From dba4fe7dcba0c37889f1302f98523171455983b9 Mon Sep 17 00:00:00 2001 From: Pedro Lopes Date: Tue, 10 Dec 2024 03:12:31 -0300 Subject: [PATCH 02/12] chore: add AUTH_OIDC_PROVIDER var at .env example --- .env.example | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.env.example b/.env.example index 75dcf7683..bdacbe671 100644 --- a/.env.example +++ b/.env.example @@ -8,6 +8,8 @@ #GITHUB_CLIENT_ID= #GITHUB_CLIENT_SECRET= +#AUTH_OIDC_PROVIDER='{"issuer":"http://localhost:8080/realms/dev_realm","clientId":"dev_client","clientSecret":"your_generated_secret"}' + #DATABASE_URL=postgresql://postgres:postgres-mqf3nzx@localhost:5438/postgres #REDIS_URL=redis://default:redis-mqf3nzx@localhost:6380 #KAFKA_BOOTSTRAP_SERVERS=localhost:19092 From 1e173c9023aa08189182383c7ebff80fd1e8fcbd Mon Sep 17 00:00:00 2001 From: Pedro Lopes Date: Tue, 10 Dec 2024 03:13:30 -0300 Subject: [PATCH 03/12] chore: ensure pg healthcheck has same user on devenv compose --- devenv/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devenv/docker-compose.yml b/devenv/docker-compose.yml index d34f77d79..fdfe1b0e0 100644 --- a/devenv/docker-compose.yml +++ b/devenv/docker-compose.yml @@ -30,7 +30,7 @@ services: max-size: 10m max-file: "3" healthcheck: - test: ["CMD-SHELL", "pg_isready", "-d", "postgres"] + test: ["CMD-SHELL", "pg_isready", "-d", "postgres", "-U", "postgres"] interval: 1s timeout: 10s retries: 10 From fb7a7f8202c4bd954d48b9460e60f8315cd25ec4 Mon Sep 17 00:00:00 2001 From: Pedro Lopes Date: Tue, 10 Dec 2024 03:14:26 -0300 Subject: [PATCH 04/12] chore: remove zookeeper dependency on kafka at devenv compose --- devenv/docker-compose.yml | 42 ++++++++++++--------------------------- 1 file changed, 13 insertions(+), 29 deletions(-) diff --git a/devenv/docker-compose.yml b/devenv/docker-compose.yml index fdfe1b0e0..08ba8e485 100644 --- a/devenv/docker-compose.yml +++ b/devenv/docker-compose.yml @@ -38,44 +38,28 @@ services: - "${PG_PORT:-5438}:5432" volumes: - ./data/postgres:/var/lib/postgresql/data - jitsu-dev-zookeeper: - tty: true - image: wurstmeister/zookeeper:latest - expose: - - 2181 jitsu-dev-kafka: - tty: true - image: wurstmeister/kafka:latest - depends_on: - - jitsu-dev-zookeeper + image: bitnami/kafka:3.4 # ports: # - "19092:19092" # - "19093:19093" environment: - TERM: "xterm-256color" - KAFKA_ZOOKEEPER_CONNECT: jitsu-dev-zookeeper:2181 - - KAFKA_LISTENERS: INTERNAL://0.0.0.0:19093,OUTSIDE://0.0.0.0:19092 - KAFKA_ADVERTISED_LISTENERS: INTERNAL://jitsu-dev-kafka:19093,OUTSIDE://localhost:19092 - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,OUTSIDE:PLAINTEXT - KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL + KAFKA_CFG_NODE_ID: 0 + KAFKA_CFG_PROCESS_ROLES: controller,broker + KAFKA_CFG_LISTENERS: PLAINTEXT://:19093,CONTROLLER://:9093,EXTERNAL://:19092 + KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://jitsu-dev-kafka:19093,EXTERNAL://localhost:19092 + KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT + KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 0@jitsu-dev-kafka:9093 + KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER + KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: true + ALLOW_PLAINTEXT_LISTENER: yes jitsu-dev-kafka-console: - tty: true - image: docker.redpanda.com/vectorized/console:master-173596f - links: - - "jitsu-dev-kafka:localhost" - restart: on-failure - entrypoint: /bin/sh - command: -c "echo \"$$CONSOLE_CONFIG_FILE\" > /tmp/config.yml; /app/console" - environment: - TERM: "xterm-256color" - CONFIG_FILEPATH: /tmp/config.yml - CONSOLE_CONFIG_FILE: | - kafka: - brokers: ["jitsu-dev-kafka:19093"] + image: docker.redpanda.com/redpandadata/console:latest ports: - "${KAFKA_CONSOLE_PORT:-3032}:8080" + environment: + KAFKA_BROKERS: "jitsu-dev-kafka:19093" depends_on: - jitsu-dev-kafka From 63723898a3cdcd0abd8e0ae3cd27e10ee13645c6 Mon Sep 17 00:00:00 2001 From: Pedro Lopes Date: Tue, 10 Dec 2024 03:14:43 -0300 Subject: [PATCH 05/12] chore: add keycloak service at devenv compose --- devenv/docker-compose.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/devenv/docker-compose.yml b/devenv/docker-compose.yml index 08ba8e485..1cae5c710 100644 --- a/devenv/docker-compose.yml +++ b/devenv/docker-compose.yml @@ -89,3 +89,11 @@ services: depends_on: - jitsu-dev-postgres - jitsu-dev-kafka + keycloak: + command: start-dev + image: "quay.io/keycloak/keycloak:26.0.4" + environment: + - KC_BOOTSTRAP_ADMIN_PASSWORD=admin + - KC_BOOTSTRAP_ADMIN_USERNAME=admin + ports: + - "8080:8080" From 0292b9775c8a23381480b1440ab4f0ec58ef97b1 Mon Sep 17 00:00:00 2001 From: Pedro Lopes Date: Tue, 10 Dec 2024 10:10:35 -0300 Subject: [PATCH 06/12] chore: ensure correct parse of AUTH_OIDC_PROVIDER env --- pnpm-lock.yaml | 828 +++---------------------- webapps/console/__tests__/oidc.test.ts | 31 + webapps/console/jest.config.js | 9 + webapps/console/jest.setup.js | 8 + webapps/console/lib/nextauth.config.ts | 4 +- webapps/console/lib/oidc.ts | 9 + webapps/console/package.json | 5 +- 7 files changed, 144 insertions(+), 750 deletions(-) create mode 100644 webapps/console/__tests__/oidc.test.ts create mode 100644 webapps/console/jest.config.js create mode 100644 webapps/console/jest.setup.js diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e95f9d7f2..ee9f393bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,7 +83,7 @@ importers: version: link:../../libs/juava webpack: specifier: ^5.95.0 - version: 5.95.0 + version: 5.95.0(webpack-cli@5.1.4) cli/jitsu-cli: dependencies: @@ -150,13 +150,13 @@ importers: version: 18.19.61 '@types/webpack': specifier: ^5.28.5 - version: 5.28.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + version: 5.28.5(webpack-cli@5.1.4) '@webpack-cli/generators': specifier: ^3.0.7 version: 3.0.7(encoding@0.1.13)(mem-fs@2.3.0)(prettier@2.8.8)(webpack-cli@5.1.4)(webpack@5.95.0) babel-loader: specifier: ^9.1.3 - version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0) chalk: specifier: ^5.3.0 version: 5.3.0 @@ -192,7 +192,7 @@ importers: version: 3.3.2 node-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 2.0.0(webpack@5.95.0) prismjs: specifier: ^1.29.0 version: 1.29.0 @@ -207,13 +207,13 @@ importers: version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@5.6.3)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 9.5.1(typescript@5.6.3)(webpack@5.95.0) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.61)(typescript@5.6.3) webpack: specifier: ^5.95.0 - version: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + version: 5.95.0(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) @@ -682,19 +682,19 @@ importers: version: 0.0.152 '@types/webpack': specifier: ^5.28.5 - version: 5.28.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + version: 5.28.5(webpack-cli@5.1.4) '@webpack-cli/generators': specifier: ^3.0.7 version: 3.0.7(encoding@0.1.13)(mem-fs@2.3.0)(prettier@2.8.8)(webpack-cli@5.1.4)(webpack@5.95.0) babel-loader: specifier: ^9.1.3 - version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0) clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 4.0.0(webpack@5.95.0) copy-webpack-plugin: specifier: ^12.0.2 - version: 12.0.2(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 12.0.2(webpack@5.95.0) declaration-bundler-webpack-plugin: specifier: ^1.0.3 version: 1.0.3 @@ -709,16 +709,16 @@ importers: version: 4.17.21 node-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 2.0.0(webpack@5.95.0) nodemon: specifier: ^3.1.4 version: 3.1.7 ts-jest: specifier: ^29.2.3 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.23.1)(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@5.6.3)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 9.5.1(typescript@5.6.3)(webpack@5.95.0) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.61)(typescript@5.6.3) @@ -730,7 +730,7 @@ importers: version: 5.6.3 webpack: specifier: ^5.95.0 - version: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + version: 5.95.0(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) @@ -851,19 +851,19 @@ importers: version: 0.0.152 '@types/webpack': specifier: ^5.28.5 - version: 5.28.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + version: 5.28.5(webpack-cli@5.1.4) '@webpack-cli/generators': specifier: ^3.0.7 version: 3.0.7(encoding@0.1.13)(mem-fs@2.3.0)(prettier@2.8.8)(webpack-cli@5.1.4)(webpack@5.95.0) babel-loader: specifier: ^9.1.3 - version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0) clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 4.0.0(webpack@5.95.0) copy-webpack-plugin: specifier: ^12.0.2 - version: 12.0.2(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 12.0.2(webpack@5.95.0) declaration-bundler-webpack-plugin: specifier: ^1.0.3 version: 1.0.3 @@ -878,16 +878,16 @@ importers: version: 4.17.21 node-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 2.0.0(webpack@5.95.0) nodemon: specifier: ^3.1.4 version: 3.1.7 ts-jest: specifier: ^29.2.3 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.23.1)(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@5.6.3)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + version: 9.5.1(typescript@5.6.3)(webpack@5.95.0) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.61)(typescript@5.6.3) @@ -899,7 +899,7 @@ importers: version: 5.6.3 webpack: specifier: ^5.95.0 - version: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + version: 5.95.0(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) @@ -1164,6 +1164,9 @@ importers: '@types/cli-progress': specifier: ^3.11.0 version: 3.11.6 + '@types/jest': + specifier: ^29.5.12 + version: 29.5.14 '@types/js-yaml': specifier: ^4.0.5 version: 4.0.9 @@ -1219,8 +1222,8 @@ importers: specifier: ^2.0.7 version: 2.0.7(@types/express@4.17.21) jest: - specifier: ^28.0.0 - version: 28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + specifier: ^29.7.0 + version: 29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) less: specifier: ^4.1.2 version: 4.2.0 @@ -1245,6 +1248,9 @@ importers: tailwindcss: specifier: ^3.4.14 version: 3.4.14(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + ts-jest: + specifier: ^29.2.3 + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.23.1)(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.61)(typescript@5.6.3) @@ -3108,15 +3114,6 @@ packages: node-notifier: optional: true - '@jest/core@28.1.3': - resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - '@jest/core@29.7.0': resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3130,26 +3127,14 @@ packages: resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/environment@28.1.3': - resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@jest/environment@29.7.0': resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/expect-utils@28.1.3': - resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@jest/expect-utils@29.7.0': resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/expect@28.1.3': - resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@jest/expect@29.7.0': resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3158,10 +3143,6 @@ packages: resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/fake-timers@28.1.3': - resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@jest/fake-timers@29.7.0': resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3170,10 +3151,6 @@ packages: resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/globals@28.1.3': - resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@jest/globals@29.7.0': resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3187,15 +3164,6 @@ packages: node-notifier: optional: true - '@jest/reporters@28.1.3': - resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - '@jest/reporters@29.7.0': resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3217,10 +3185,6 @@ packages: resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/source-map@28.1.2': - resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@jest/source-map@29.6.3': resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3241,10 +3205,6 @@ packages: resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/test-sequencer@28.1.3': - resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@jest/test-sequencer@29.7.0': resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3253,10 +3213,6 @@ packages: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - '@jest/transform@28.1.3': - resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - '@jest/transform@29.7.0': resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4246,9 +4202,6 @@ packages: '@sinonjs/fake-timers@8.1.0': resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - '@sinonjs/fake-timers@9.1.2': - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} - '@smithy/abort-controller@3.1.6': resolution: {integrity: sha512-0XuhuHQlEqbNQZp7QxxrFTdVWdwxch4vjxYgfInF91hZFkPxf9QDrdQka0KfxFMPqLNzSw0b95uGTrLliQUavQ==} engines: {node: '>=16.0.0'} @@ -5780,12 +5733,6 @@ packages: peerDependencies: '@babel/core': ^7.8.0 - babel-jest@28.1.3: - resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5814,10 +5761,6 @@ packages: resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - babel-plugin-jest-hoist@28.1.3: - resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - babel-plugin-jest-hoist@29.6.3: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5868,12 +5811,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - babel-preset-jest@28.1.3: - resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7021,10 +6958,6 @@ packages: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - diff-sequences@28.1.1: - resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7620,10 +7553,6 @@ packages: resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - expect@28.1.3: - resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8845,10 +8774,6 @@ packages: resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-changed-files@28.1.3: - resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-changed-files@29.7.0: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8857,10 +8782,6 @@ packages: resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-circus@28.1.3: - resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-circus@29.7.0: resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8875,16 +8796,6 @@ packages: node-notifier: optional: true - jest-cli@28.1.3: - resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - jest-cli@29.7.0: resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8904,18 +8815,6 @@ packages: ts-node: optional: true - jest-config@28.1.3: - resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - jest-config@29.7.0: resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8932,10 +8831,6 @@ packages: resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-diff@28.1.3: - resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8944,10 +8839,6 @@ packages: resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-docblock@28.1.1: - resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-docblock@29.7.0: resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8956,10 +8847,6 @@ packages: resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-each@28.1.3: - resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-each@29.7.0: resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8972,10 +8859,6 @@ packages: resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-environment-node@28.1.3: - resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-environment-node@29.7.0: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8984,10 +8867,6 @@ packages: resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-get-type@28.0.2: - resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8996,10 +8875,6 @@ packages: resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-haste-map@28.1.3: - resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-haste-map@29.7.0: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9012,10 +8887,6 @@ packages: resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-leak-detector@28.1.3: - resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-leak-detector@29.7.0: resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9024,10 +8895,6 @@ packages: resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-matcher-utils@28.1.3: - resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-matcher-utils@29.7.0: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9048,10 +8915,6 @@ packages: resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-mock@28.1.3: - resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-mock@29.7.0: resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9081,10 +8944,6 @@ packages: resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-resolve-dependencies@28.1.3: - resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-resolve-dependencies@29.7.0: resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9093,10 +8952,6 @@ packages: resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-resolve@28.1.3: - resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-resolve@29.7.0: resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9105,10 +8960,6 @@ packages: resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-runner@28.1.3: - resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-runner@29.7.0: resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9117,10 +8968,6 @@ packages: resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-runtime@28.1.3: - resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-runtime@29.7.0: resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9133,10 +8980,6 @@ packages: resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-snapshot@28.1.3: - resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-snapshot@29.7.0: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9157,10 +9000,6 @@ packages: resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - jest-validate@28.1.3: - resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - jest-validate@29.7.0: resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9209,16 +9048,6 @@ packages: node-notifier: optional: true - jest@28.1.3: - resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - jest@29.7.0: resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16724,41 +16553,6 @@ snapshots: - ts-node - utf-8-validate - '@jest/core@28.1.3(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3))': - dependencies: - '@jest/console': 28.1.3 - '@jest/reporters': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.19.61 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 28.1.3 - jest-config: 28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) - jest-haste-map: 28.1.3 - jest-message-util: 28.1.3 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.3 - jest-resolve-dependencies: 28.1.3 - jest-runner: 28.1.3 - jest-runtime: 28.1.3 - jest-snapshot: 28.1.3 - jest-util: 28.1.3 - jest-validate: 28.1.3 - jest-watcher: 28.1.3 - micromatch: 4.0.8 - pretty-format: 28.1.3 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3))': dependencies: '@jest/console': 29.7.0 @@ -16871,13 +16665,6 @@ snapshots: '@types/node': 18.19.61 jest-mock: 27.5.1 - '@jest/environment@28.1.3': - dependencies: - '@jest/fake-timers': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.19.61 - jest-mock: 28.1.3 - '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 @@ -16885,21 +16672,10 @@ snapshots: '@types/node': 18.19.61 jest-mock: 29.7.0 - '@jest/expect-utils@28.1.3': - dependencies: - jest-get-type: 28.0.2 - '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 - '@jest/expect@28.1.3': - dependencies: - expect: 28.1.3 - jest-snapshot: 28.1.3 - transitivePeerDependencies: - - supports-color - '@jest/expect@29.7.0': dependencies: expect: 29.7.0 @@ -16916,15 +16692,6 @@ snapshots: jest-mock: 27.5.1 jest-util: 27.5.1 - '@jest/fake-timers@28.1.3': - dependencies: - '@jest/types': 28.1.3 - '@sinonjs/fake-timers': 9.1.2 - '@types/node': 18.19.61 - jest-message-util: 28.1.3 - jest-mock: 28.1.3 - jest-util: 28.1.3 - '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -16940,14 +16707,6 @@ snapshots: '@jest/types': 27.5.1 expect: 27.5.1 - '@jest/globals@28.1.3': - dependencies: - '@jest/environment': 28.1.3 - '@jest/expect': 28.1.3 - '@jest/types': 28.1.3 - transitivePeerDependencies: - - supports-color - '@jest/globals@29.7.0': dependencies: '@jest/environment': 29.7.0 @@ -16987,36 +16746,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/reporters@28.1.3': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 18.19.61 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - jest-worker: 28.1.3 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - terminal-link: 2.1.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - '@jest/reporters@29.7.0': dependencies: '@bcoe/v8-coverage': 0.2.3 @@ -17060,12 +16789,6 @@ snapshots: graceful-fs: 4.2.11 source-map: 0.6.1 - '@jest/source-map@28.1.2': - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 - '@jest/source-map@29.6.3': dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -17102,13 +16825,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/test-sequencer@28.1.3': - dependencies: - '@jest/test-result': 28.1.3 - graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - slash: 3.0.0 - '@jest/test-sequencer@29.7.0': dependencies: '@jest/test-result': 29.7.0 @@ -17136,26 +16852,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/transform@28.1.3': - dependencies: - '@babel/core': 7.26.0 - '@jest/types': 28.1.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - micromatch: 4.0.8 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - '@jest/transform@29.7.0': dependencies: '@babel/core': 7.26.0 @@ -17637,9 +17333,9 @@ snapshots: react-refresh: 0.11.0 schema-utils: 4.2.0 source-map: 0.7.4 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) optionalDependencies: - '@types/webpack': 5.28.5 + '@types/webpack': 5.28.5(webpack-cli@5.1.4) type-fest: 3.13.1 webpack-dev-server: 4.15.2(webpack@5.95.0) webpack-hot-middleware: 2.26.1 @@ -18263,10 +17959,6 @@ snapshots: dependencies: '@sinonjs/commons': 1.8.6 - '@sinonjs/fake-timers@9.1.2': - dependencies: - '@sinonjs/commons': 1.8.6 - '@smithy/abort-controller@3.1.6': dependencies: '@smithy/types': 3.6.0 @@ -19589,18 +19281,6 @@ snapshots: '@types/webidl-conversions@7.0.3': {} - '@types/webpack@5.28.5': - dependencies: - '@types/node': 18.19.61 - tapable: 2.2.1 - webpack: 5.95.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - optional: true - '@types/webpack@5.28.5(esbuild@0.23.1)': dependencies: '@types/node': 18.19.61 @@ -19613,11 +19293,11 @@ snapshots: - webpack-cli optional: true - '@types/webpack@5.28.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))': + '@types/webpack@5.28.5(webpack-cli@5.1.4)': dependencies: '@types/node': 18.19.61 tapable: 2.2.1 - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + webpack: 5.95.0(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -19925,14 +19605,14 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + webpack: 5.95.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) '@webpack-cli/generators@3.0.7(encoding@0.1.13)(mem-fs@2.3.0)(prettier@2.8.8)(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + webpack: 5.95.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) yeoman-environment: 3.19.3 yeoman-generator: 5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3) @@ -19944,14 +19624,14 @@ snapshots: - mem-fs - supports-color - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + webpack: 5.95.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + webpack: 5.95.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) '@xobotyi/scrollbar-width@1.9.5': {} @@ -20428,19 +20108,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-jest@28.1.3(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@jest/transform': 28.1.3 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3(@babel/core@7.26.0) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - babel-jest@29.7.0(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -20461,7 +20128,7 @@ snapshots: loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.95.0(esbuild@0.23.1)): dependencies: @@ -20470,19 +20137,12 @@ snapshots: schema-utils: 4.2.0 webpack: 5.95.0(esbuild@0.23.1) - babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): - dependencies: - '@babel/core': 7.26.0 - find-cache-dir: 4.0.0 - schema-utils: 4.2.0 - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) - babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.95.0): dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) babel-plugin-istanbul@6.1.1: dependencies: @@ -20501,13 +20161,6 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 - babel-plugin-jest-hoist@28.1.3: - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 - babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.25.9 @@ -20583,12 +20236,6 @@ snapshots: babel-plugin-jest-hoist: 27.5.1 babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) - babel-preset-jest@28.1.3(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - babel-plugin-jest-hoist: 28.1.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) - babel-preset-jest@29.6.3(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -21061,10 +20708,10 @@ snapshots: clean-stack@2.2.0: {} - clean-webpack-plugin@4.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): + clean-webpack-plugin@4.0.0(webpack@5.95.0): dependencies: del: 4.1.1 - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + webpack: 5.95.0(webpack-cli@5.1.4) cli-boxes@3.0.0: {} @@ -21292,7 +20939,7 @@ snapshots: dependencies: toggle-selection: 1.0.6 - copy-webpack-plugin@12.0.2(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): + copy-webpack-plugin@12.0.2(webpack@5.95.0): dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -21300,7 +20947,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + webpack: 5.95.0(webpack-cli@5.1.4) core-js-compat@3.38.1: dependencies: @@ -21521,7 +21168,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) css-minimizer-webpack-plugin@3.4.1(webpack@5.95.0): dependencies: @@ -21531,7 +21178,7 @@ snapshots: schema-utils: 4.2.0 serialize-javascript: 6.0.2 source-map: 0.6.1 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) css-prefers-color-scheme@6.0.3(postcss@8.4.47): dependencies: @@ -21925,8 +21572,6 @@ snapshots: diff-sequences@27.5.1: {} - diff-sequences@28.1.1: {} - diff-sequences@29.6.3: {} diff@4.0.2: {} @@ -22641,7 +22286,7 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 schema-utils: 4.2.0 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) eslint@8.57.1: dependencies: @@ -22756,14 +22401,6 @@ snapshots: jest-matcher-utils: 27.5.1 jest-message-util: 27.5.1 - expect@28.1.3: - dependencies: - '@jest/expect-utils': 28.1.3 - jest-get-type: 28.0.2 - jest-matcher-utils: 28.1.3 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 @@ -22936,7 +22573,7 @@ snapshots: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) file-system-cache@2.3.0: dependencies: @@ -23110,7 +22747,7 @@ snapshots: semver: 7.6.3 tapable: 1.1.3 typescript: 5.6.3 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) optionalDependencies: eslint: 8.57.1 @@ -23685,7 +23322,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) htmlencode@0.0.4: {} @@ -24258,11 +23895,6 @@ snapshots: execa: 5.1.1 throat: 6.0.2 - jest-changed-files@28.1.3: - dependencies: - execa: 5.1.1 - p-limit: 3.1.0 - jest-changed-files@29.7.0: dependencies: execa: 5.1.1 @@ -24293,30 +23925,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-circus@28.1.3: - dependencies: - '@jest/environment': 28.1.3 - '@jest/expect': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.19.61 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - is-generator-fn: 2.1.0 - jest-each: 28.1.3 - jest-matcher-utils: 28.1.3 - jest-message-util: 28.1.3 - jest-runtime: 28.1.3 - jest-snapshot: 28.1.3 - jest-util: 28.1.3 - p-limit: 3.1.0 - pretty-format: 28.1.3 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - supports-color - jest-circus@29.7.0(babel-plugin-macros@3.1.0): dependencies: '@jest/environment': 29.7.0 @@ -24364,25 +23972,6 @@ snapshots: - ts-node - utf-8-validate - jest-cli@28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): - dependencies: - '@jest/core': 28.1.3(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.2.0 - jest-config: 28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) - jest-util: 28.1.3 - jest-validate: 28.1.3 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - jest-cli@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) @@ -24493,36 +24082,6 @@ snapshots: - supports-color - utf-8-validate - jest-config@28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 28.1.3 - '@jest/types': 28.1.3 - babel-jest: 28.1.3(@babel/core@7.26.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 28.1.3 - jest-environment-node: 28.1.3 - jest-get-type: 28.0.2 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.3 - jest-runner: 28.1.3 - jest-util: 28.1.3 - jest-validate: 28.1.3 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 28.1.3 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 18.19.61 - ts-node: 10.9.2(@types/node@18.19.61)(typescript@5.6.3) - transitivePeerDependencies: - - supports-color - jest-config@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): dependencies: '@babel/core': 7.26.0 @@ -24654,13 +24213,6 @@ snapshots: jest-get-type: 27.5.1 pretty-format: 27.5.1 - jest-diff@28.1.3: - dependencies: - chalk: 4.1.2 - diff-sequences: 28.1.1 - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -24672,10 +24224,6 @@ snapshots: dependencies: detect-newline: 3.1.0 - jest-docblock@28.1.1: - dependencies: - detect-newline: 3.1.0 - jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 @@ -24688,14 +24236,6 @@ snapshots: jest-util: 27.5.1 pretty-format: 27.5.1 - jest-each@28.1.3: - dependencies: - '@jest/types': 28.1.3 - chalk: 4.1.2 - jest-get-type: 28.0.2 - jest-util: 28.1.3 - pretty-format: 28.1.3 - jest-each@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -24728,15 +24268,6 @@ snapshots: jest-mock: 27.5.1 jest-util: 27.5.1 - jest-environment-node@28.1.3: - dependencies: - '@jest/environment': 28.1.3 - '@jest/fake-timers': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.19.61 - jest-mock: 28.1.3 - jest-util: 28.1.3 - jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -24748,8 +24279,6 @@ snapshots: jest-get-type@27.5.1: {} - jest-get-type@28.0.2: {} - jest-get-type@29.6.3: {} jest-haste-map@27.5.1: @@ -24769,22 +24298,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - jest-haste-map@28.1.3: - dependencies: - '@jest/types': 28.1.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 18.19.61 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - jest-worker: 28.1.3 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -24828,11 +24341,6 @@ snapshots: jest-get-type: 27.5.1 pretty-format: 27.5.1 - jest-leak-detector@28.1.3: - dependencies: - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - jest-leak-detector@29.7.0: dependencies: jest-get-type: 29.6.3 @@ -24845,13 +24353,6 @@ snapshots: jest-get-type: 27.5.1 pretty-format: 27.5.1 - jest-matcher-utils@28.1.3: - dependencies: - chalk: 4.1.2 - jest-diff: 28.1.3 - jest-get-type: 28.0.2 - pretty-format: 28.1.3 - jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 @@ -24900,11 +24401,6 @@ snapshots: '@jest/types': 27.5.1 '@types/node': 18.19.61 - jest-mock@28.1.3: - dependencies: - '@jest/types': 28.1.3 - '@types/node': 18.19.61 - jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -24915,10 +24411,6 @@ snapshots: optionalDependencies: jest-resolve: 27.5.1 - jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): - optionalDependencies: - jest-resolve: 28.1.3 - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): optionalDependencies: jest-resolve: 29.7.0 @@ -24937,13 +24429,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-resolve-dependencies@28.1.3: - dependencies: - jest-regex-util: 28.0.2 - jest-snapshot: 28.1.3 - transitivePeerDependencies: - - supports-color - jest-resolve-dependencies@29.7.0: dependencies: jest-regex-util: 29.6.3 @@ -24964,18 +24449,6 @@ snapshots: resolve.exports: 1.1.1 slash: 3.0.0 - jest-resolve@28.1.3: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - jest-pnp-resolver: 1.2.3(jest-resolve@28.1.3) - jest-util: 28.1.3 - jest-validate: 28.1.3 - resolve: 1.22.8 - resolve.exports: 1.1.1 - slash: 3.0.0 - jest-resolve@29.7.0: dependencies: chalk: 4.1.2 @@ -25017,32 +24490,6 @@ snapshots: - supports-color - utf-8-validate - jest-runner@28.1.3: - dependencies: - '@jest/console': 28.1.3 - '@jest/environment': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.19.61 - chalk: 4.1.2 - emittery: 0.10.2 - graceful-fs: 4.2.11 - jest-docblock: 28.1.1 - jest-environment-node: 28.1.3 - jest-haste-map: 28.1.3 - jest-leak-detector: 28.1.3 - jest-message-util: 28.1.3 - jest-resolve: 28.1.3 - jest-runtime: 28.1.3 - jest-util: 28.1.3 - jest-watcher: 28.1.3 - jest-worker: 28.1.3 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - jest-runner@29.7.0: dependencies: '@jest/console': 29.7.0 @@ -25096,33 +24543,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-runtime@28.1.3: - dependencies: - '@jest/environment': 28.1.3 - '@jest/fake-timers': 28.1.3 - '@jest/globals': 28.1.3 - '@jest/source-map': 28.1.2 - '@jest/test-result': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - chalk: 4.1.2 - cjs-module-lexer: 1.4.1 - collect-v8-coverage: 1.0.2 - execa: 5.1.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 28.1.3 - jest-message-util: 28.1.3 - jest-mock: 28.1.3 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.3 - jest-snapshot: 28.1.3 - jest-util: 28.1.3 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - jest-runtime@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -25182,34 +24602,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-snapshot@28.1.3: - dependencies: - '@babel/core': 7.26.0 - '@babel/generator': 7.26.0 - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - '@jest/expect-utils': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@types/babel__traverse': 7.20.6 - '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) - chalk: 4.1.2 - expect: 28.1.3 - graceful-fs: 4.2.11 - jest-diff: 28.1.3 - jest-get-type: 28.0.2 - jest-haste-map: 28.1.3 - jest-matcher-utils: 28.1.3 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - natural-compare: 1.4.0 - pretty-format: 28.1.3 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - jest-snapshot@29.7.0: dependencies: '@babel/core': 7.26.0 @@ -25271,15 +24663,6 @@ snapshots: leven: 3.1.0 pretty-format: 27.5.1 - jest-validate@28.1.3: - dependencies: - '@jest/types': 28.1.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 28.0.2 - leven: 3.1.0 - pretty-format: 28.1.3 - jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -25369,17 +24752,6 @@ snapshots: - ts-node - utf-8-validate - jest@28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): - dependencies: - '@jest/core': 28.1.3(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) - '@jest/types': 28.1.3 - import-local: 3.2.0 - jest-cli: 28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - jest@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) @@ -26105,7 +25477,7 @@ snapshots: dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) minimalistic-assert@1.0.1: {} @@ -26900,10 +26272,10 @@ snapshots: node-int64@0.4.0: {} - node-loader@2.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): + node-loader@2.0.0(webpack@5.95.0): dependencies: loader-utils: 2.0.4 - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + webpack: 5.95.0(webpack-cli@5.1.4) node-polyfill-webpack-plugin@2.0.1(webpack@5.95.0(esbuild@0.23.1)): dependencies: @@ -27816,7 +27188,7 @@ snapshots: klona: 2.0.6 postcss: 8.4.47 semver: 7.6.3 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) postcss-loader@8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.95.0(esbuild@0.23.1)): dependencies: @@ -28515,7 +27887,7 @@ snapshots: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) rc-align@4.0.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -28929,7 +28301,7 @@ snapshots: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -29071,7 +28443,7 @@ snapshots: style-loader: 3.3.4(webpack@5.95.0) tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) terser-webpack-plugin: 5.3.10(webpack@5.95.0) - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) webpack-dev-server: 4.15.2(webpack@5.95.0) webpack-manifest-plugin: 4.1.1(webpack@5.95.0) workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.95.0) @@ -29602,7 +28974,7 @@ snapshots: dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) sass-loader@13.3.3(webpack@5.95.0(esbuild@0.23.1)): dependencies: @@ -29909,7 +29281,7 @@ snapshots: abab: 2.0.6 iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) source-map-support@0.5.13: dependencies: @@ -30247,7 +29619,7 @@ snapshots: style-loader@3.3.4(webpack@5.95.0): dependencies: - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) styled-jsx@5.1.6(@babel/core@7.26.0)(react@18.3.1): dependencies: @@ -30456,15 +29828,6 @@ snapshots: optionalDependencies: esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.36.0 - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) - terser-webpack-plugin@5.3.10(webpack@5.95.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -30472,7 +29835,7 @@ snapshots: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) terser@5.36.0: dependencies: @@ -30641,12 +30004,12 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.23.1)(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + jest: 29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -30659,13 +30022,14 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) + esbuild: 0.23.1 - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + jest: 29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -30717,7 +30081,7 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - ts-loader@9.5.1(typescript@5.6.3)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): + ts-loader@9.5.1(typescript@5.6.3)(webpack@5.95.0): dependencies: chalk: 4.1.2 enhanced-resolve: 5.17.1 @@ -30725,7 +30089,7 @@ snapshots: semver: 7.6.3 source-map: 0.7.4 typescript: 5.6.3 - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + webpack: 5.95.0(webpack-cli@5.1.4) ts-morph@13.0.3: dependencies: @@ -31277,9 +30641,9 @@ snapshots: webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.95.0) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.95.0) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.95.0) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.6 @@ -31288,7 +30652,7 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + webpack: 5.95.0(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: '@webpack-cli/generators': 3.0.7(encoding@0.1.13)(mem-fs@2.3.0)(prettier@2.8.8)(webpack-cli@5.1.4)(webpack@5.95.0) @@ -31310,7 +30674,7 @@ snapshots: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) webpack-dev-middleware@6.1.3(webpack@5.95.0(esbuild@0.23.1)): dependencies: @@ -31396,7 +30760,7 @@ snapshots: webpack-dev-middleware: 5.3.4(webpack@5.95.0) ws: 8.18.0 optionalDependencies: - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) transitivePeerDependencies: - bufferutil - debug @@ -31412,7 +30776,7 @@ snapshots: webpack-manifest-plugin@4.1.1(webpack@5.95.0): dependencies: tapable: 2.2.1 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) webpack-sources: 2.3.1 webpack-merge@5.10.0: @@ -31435,36 +30799,6 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.95.0: - dependencies: - '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.14.0 - acorn-import-attributes: 1.9.5(acorn@8.14.0) - browserslist: 4.24.2 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.95.0) - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - webpack@5.95.0(esbuild@0.23.1): dependencies: '@types/estree': 1.0.6 @@ -31495,7 +30829,7 @@ snapshots: - esbuild - uglify-js - webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)): + webpack@5.95.0(webpack-cli@5.1.4): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 @@ -31517,7 +30851,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + terser-webpack-plugin: 5.3.10(webpack@5.95.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: @@ -31753,7 +31087,7 @@ snapshots: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 - webpack: 5.95.0 + webpack: 5.95.0(webpack-cli@5.1.4) webpack-sources: 1.4.3 workbox-build: 6.6.0(@types/babel__core@7.20.5) transitivePeerDependencies: diff --git a/webapps/console/__tests__/oidc.test.ts b/webapps/console/__tests__/oidc.test.ts new file mode 100644 index 000000000..b94cbfc92 --- /dev/null +++ b/webapps/console/__tests__/oidc.test.ts @@ -0,0 +1,31 @@ +import { ParseJSONConfigFromEnv } from "../lib/oidc"; // Update with the correct path + +describe("ParseJSONConfigFromEnv", () => { + it("should return parsed JSON object when a valid JSON string is provided", () => { + const env = '{"key":"value"}'; + const result = ParseJSONConfigFromEnv(env); + expect(result).toEqual({ key: "value" }); + }); + + it("should return undefined for an empty string", () => { + const env = ""; + const result = ParseJSONConfigFromEnv(env); + expect(result).toBeUndefined(); + }); + + it("should return undefined for a string that is equal to '\"\"'", () => { + const env = '""'; + const result = ParseJSONConfigFromEnv(env); + expect(result).toBeUndefined(); + }); + + it("should log an error and return undefined for an invalid JSON string", () => { + const env = "invalid json"; + console.error = jest.fn(); + + const result = ParseJSONConfigFromEnv(env); + + expect(console.error).toHaveBeenCalledWith("Failed to parse JSON config from env", expect.any(SyntaxError)); + expect(result).toBeUndefined(); + }); +}); diff --git a/webapps/console/jest.config.js b/webapps/console/jest.config.js new file mode 100644 index 000000000..de6e6d30e --- /dev/null +++ b/webapps/console/jest.config.js @@ -0,0 +1,9 @@ +/** @type {import("ts-jest").JestConfigWithTsJest} */ +module.exports = { + //preset: "ts-jest", + preset: "ts-jest", + testMatch: ["**/__tests__/**/*.test.ts"], + testEnvironment: "node", + runner: "jest-runner", + "setupFiles": ["./jest.setup.js"] +}; diff --git a/webapps/console/jest.setup.js b/webapps/console/jest.setup.js new file mode 100644 index 000000000..847bac649 --- /dev/null +++ b/webapps/console/jest.setup.js @@ -0,0 +1,8 @@ + +global.console = { + log: message => process.stdout.write(message + '\n'), + error: console.error, + warn: console.warn, + info: console.info, + debug: console.debug, +}; diff --git a/webapps/console/lib/nextauth.config.ts b/webapps/console/lib/nextauth.config.ts index 99eef622c..a6c6c0c17 100644 --- a/webapps/console/lib/nextauth.config.ts +++ b/webapps/console/lib/nextauth.config.ts @@ -2,7 +2,7 @@ import GithubProvider from "next-auth/providers/github"; import CredentialsProvider from "next-auth/providers/credentials"; import { NextAuthOptions, User } from "next-auth"; import { db } from "./server/db"; -import { OIDCConfig, OIDCProfile, OIDCProvider } from "./oidc"; +import { OIDCProvider, ParseJSONConfigFromEnv } from "./oidc"; import { checkHash, createHash, hash, requireDefined } from "juava"; import { ApiError } from "./shared/errors"; import { getServerLog } from "./server/log"; @@ -16,7 +16,7 @@ const crypto = require("crypto"); const log = getServerLog("auth"); export const githubLoginEnabled = !!process.env.GITHUB_CLIENT_ID; -export const oidcLoginConfig = JSON.parse(process.env.AUTH_OIDC_PROVIDER as string) as OIDCConfig; +export const oidcLoginConfig = ParseJSONConfigFromEnv(process.env.AUTH_OIDC_PROVIDER as string); export const credentialsLoginEnabled = isTruish(process.env.ENABLE_CREDENTIALS_LOGIN) || !!(process.env.SEED_USER_EMAIL && process.env.SEED_USER_PASSWORD); diff --git a/webapps/console/lib/oidc.ts b/webapps/console/lib/oidc.ts index e7611ce0a..f0d47418b 100644 --- a/webapps/console/lib/oidc.ts +++ b/webapps/console/lib/oidc.ts @@ -57,3 +57,12 @@ export function OIDCProvider

(options: OIDCConfig

): OAu options, }; } + +export function ParseJSONConfigFromEnv

(env: string): OIDCConfig

| undefined { + try { + return env && env != '""' ? (JSON.parse(env) as OIDCConfig

) : undefined; + } catch (error: unknown) { + console.error("Failed to parse JSON config from env", error); + return undefined; + } +} diff --git a/webapps/console/package.json b/webapps/console/package.json index 1fbdfbf88..120ad4f52 100644 --- a/webapps/console/package.json +++ b/webapps/console/package.json @@ -15,6 +15,7 @@ "console:start": "next start", "dev:rotor": "ts-node service/rotor.ts", "build": "prisma generate && next build", + "test": "tsc -p . && jest --verbose", "clean": "rm -rf ./.next ./.turbo", "compile": "tsc -p .", "tool:hash": "ts-node scripts/password-hash.ts", @@ -114,6 +115,7 @@ "@testing-library/jest-dom": "^6.1.3", "@testing-library/react": "^13.1.1", "@types/cli-progress": "^3.11.0", + "@types/jest": "^29.5.12", "@types/js-yaml": "^4.0.5", "@types/lodash": "^4.14.185", "@types/node": "^18.15.3", @@ -130,7 +132,7 @@ "eslint-config-next": "^15.0.3", "eslint-plugin-storybook": "^0.9.0", "eslint-plugin-unused-imports": "^4.0.1", - "jest": "^28.0.0", + "jest": "^29.7.0", "less": "^4.1.2", "less-loader": "^10.2.0", "minimist": "^1.2.7", @@ -140,6 +142,7 @@ "storybook": "^8.3.6", "tailwindcss": "^3.4.14", "ts-node": "^10.9.2", + "ts-jest": "^29.2.3", "type-fest": "^3.5.7", "typescript": "^5.6.3", "zod-prisma": "^0.5.4" From 1dd29b8e7f1f63b26ca45c5944a79e113648fdfc Mon Sep 17 00:00:00 2001 From: Pedro Lopes Date: Wed, 11 Dec 2024 15:46:51 -0300 Subject: [PATCH 07/12] test: remove oidc json parse test --- webapps/console/__tests__/oidc.test.ts | 31 -------------------------- webapps/console/jest.config.js | 9 -------- webapps/console/jest.setup.js | 8 ------- webapps/console/package.json | 5 +---- 4 files changed, 1 insertion(+), 52 deletions(-) delete mode 100644 webapps/console/__tests__/oidc.test.ts delete mode 100644 webapps/console/jest.config.js delete mode 100644 webapps/console/jest.setup.js diff --git a/webapps/console/__tests__/oidc.test.ts b/webapps/console/__tests__/oidc.test.ts deleted file mode 100644 index b94cbfc92..000000000 --- a/webapps/console/__tests__/oidc.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { ParseJSONConfigFromEnv } from "../lib/oidc"; // Update with the correct path - -describe("ParseJSONConfigFromEnv", () => { - it("should return parsed JSON object when a valid JSON string is provided", () => { - const env = '{"key":"value"}'; - const result = ParseJSONConfigFromEnv(env); - expect(result).toEqual({ key: "value" }); - }); - - it("should return undefined for an empty string", () => { - const env = ""; - const result = ParseJSONConfigFromEnv(env); - expect(result).toBeUndefined(); - }); - - it("should return undefined for a string that is equal to '\"\"'", () => { - const env = '""'; - const result = ParseJSONConfigFromEnv(env); - expect(result).toBeUndefined(); - }); - - it("should log an error and return undefined for an invalid JSON string", () => { - const env = "invalid json"; - console.error = jest.fn(); - - const result = ParseJSONConfigFromEnv(env); - - expect(console.error).toHaveBeenCalledWith("Failed to parse JSON config from env", expect.any(SyntaxError)); - expect(result).toBeUndefined(); - }); -}); diff --git a/webapps/console/jest.config.js b/webapps/console/jest.config.js deleted file mode 100644 index de6e6d30e..000000000 --- a/webapps/console/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import("ts-jest").JestConfigWithTsJest} */ -module.exports = { - //preset: "ts-jest", - preset: "ts-jest", - testMatch: ["**/__tests__/**/*.test.ts"], - testEnvironment: "node", - runner: "jest-runner", - "setupFiles": ["./jest.setup.js"] -}; diff --git a/webapps/console/jest.setup.js b/webapps/console/jest.setup.js deleted file mode 100644 index 847bac649..000000000 --- a/webapps/console/jest.setup.js +++ /dev/null @@ -1,8 +0,0 @@ - -global.console = { - log: message => process.stdout.write(message + '\n'), - error: console.error, - warn: console.warn, - info: console.info, - debug: console.debug, -}; diff --git a/webapps/console/package.json b/webapps/console/package.json index 120ad4f52..1fbdfbf88 100644 --- a/webapps/console/package.json +++ b/webapps/console/package.json @@ -15,7 +15,6 @@ "console:start": "next start", "dev:rotor": "ts-node service/rotor.ts", "build": "prisma generate && next build", - "test": "tsc -p . && jest --verbose", "clean": "rm -rf ./.next ./.turbo", "compile": "tsc -p .", "tool:hash": "ts-node scripts/password-hash.ts", @@ -115,7 +114,6 @@ "@testing-library/jest-dom": "^6.1.3", "@testing-library/react": "^13.1.1", "@types/cli-progress": "^3.11.0", - "@types/jest": "^29.5.12", "@types/js-yaml": "^4.0.5", "@types/lodash": "^4.14.185", "@types/node": "^18.15.3", @@ -132,7 +130,7 @@ "eslint-config-next": "^15.0.3", "eslint-plugin-storybook": "^0.9.0", "eslint-plugin-unused-imports": "^4.0.1", - "jest": "^29.7.0", + "jest": "^28.0.0", "less": "^4.1.2", "less-loader": "^10.2.0", "minimist": "^1.2.7", @@ -142,7 +140,6 @@ "storybook": "^8.3.6", "tailwindcss": "^3.4.14", "ts-node": "^10.9.2", - "ts-jest": "^29.2.3", "type-fest": "^3.5.7", "typescript": "^5.6.3", "zod-prisma": "^0.5.4" From 32b3dcdd01a6d8545a633881e4504ed3b62807d9 Mon Sep 17 00:00:00 2001 From: Pedro Lopes Date: Wed, 11 Dec 2024 15:47:20 -0300 Subject: [PATCH 08/12] chore: revert changes to pnpm-lock.yaml --- pnpm-lock.yaml | 828 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 747 insertions(+), 81 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee9f393bf..e95f9d7f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,7 +83,7 @@ importers: version: link:../../libs/juava webpack: specifier: ^5.95.0 - version: 5.95.0(webpack-cli@5.1.4) + version: 5.95.0 cli/jitsu-cli: dependencies: @@ -150,13 +150,13 @@ importers: version: 18.19.61 '@types/webpack': specifier: ^5.28.5 - version: 5.28.5(webpack-cli@5.1.4) + version: 5.28.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) '@webpack-cli/generators': specifier: ^3.0.7 version: 3.0.7(encoding@0.1.13)(mem-fs@2.3.0)(prettier@2.8.8)(webpack-cli@5.1.4)(webpack@5.95.0) babel-loader: specifier: ^9.1.3 - version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0) + version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) chalk: specifier: ^5.3.0 version: 5.3.0 @@ -192,7 +192,7 @@ importers: version: 3.3.2 node-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.95.0) + version: 2.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) prismjs: specifier: ^1.29.0 version: 1.29.0 @@ -207,13 +207,13 @@ importers: version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@5.6.3)(webpack@5.95.0) + version: 9.5.1(typescript@5.6.3)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.61)(typescript@5.6.3) webpack: specifier: ^5.95.0 - version: 5.95.0(webpack-cli@5.1.4) + version: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) webpack-cli: specifier: ^5.1.4 version: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) @@ -682,19 +682,19 @@ importers: version: 0.0.152 '@types/webpack': specifier: ^5.28.5 - version: 5.28.5(webpack-cli@5.1.4) + version: 5.28.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) '@webpack-cli/generators': specifier: ^3.0.7 version: 3.0.7(encoding@0.1.13)(mem-fs@2.3.0)(prettier@2.8.8)(webpack-cli@5.1.4)(webpack@5.95.0) babel-loader: specifier: ^9.1.3 - version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0) + version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.95.0) + version: 4.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) copy-webpack-plugin: specifier: ^12.0.2 - version: 12.0.2(webpack@5.95.0) + version: 12.0.2(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) declaration-bundler-webpack-plugin: specifier: ^1.0.3 version: 1.0.3 @@ -709,16 +709,16 @@ importers: version: 4.17.21 node-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.95.0) + version: 2.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) nodemon: specifier: ^3.1.4 version: 3.1.7 ts-jest: specifier: ^29.2.3 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.23.1)(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@5.6.3)(webpack@5.95.0) + version: 9.5.1(typescript@5.6.3)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.61)(typescript@5.6.3) @@ -730,7 +730,7 @@ importers: version: 5.6.3 webpack: specifier: ^5.95.0 - version: 5.95.0(webpack-cli@5.1.4) + version: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) webpack-cli: specifier: ^5.1.4 version: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) @@ -851,19 +851,19 @@ importers: version: 0.0.152 '@types/webpack': specifier: ^5.28.5 - version: 5.28.5(webpack-cli@5.1.4) + version: 5.28.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) '@webpack-cli/generators': specifier: ^3.0.7 version: 3.0.7(encoding@0.1.13)(mem-fs@2.3.0)(prettier@2.8.8)(webpack-cli@5.1.4)(webpack@5.95.0) babel-loader: specifier: ^9.1.3 - version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0) + version: 9.2.1(@babel/core@7.26.0)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.95.0) + version: 4.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) copy-webpack-plugin: specifier: ^12.0.2 - version: 12.0.2(webpack@5.95.0) + version: 12.0.2(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) declaration-bundler-webpack-plugin: specifier: ^1.0.3 version: 1.0.3 @@ -878,16 +878,16 @@ importers: version: 4.17.21 node-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.95.0) + version: 2.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) nodemon: specifier: ^3.1.4 version: 3.1.7 ts-jest: specifier: ^29.2.3 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.23.1)(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@5.6.3)(webpack@5.95.0) + version: 9.5.1(typescript@5.6.3)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.61)(typescript@5.6.3) @@ -899,7 +899,7 @@ importers: version: 5.6.3 webpack: specifier: ^5.95.0 - version: 5.95.0(webpack-cli@5.1.4) + version: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) webpack-cli: specifier: ^5.1.4 version: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) @@ -1164,9 +1164,6 @@ importers: '@types/cli-progress': specifier: ^3.11.0 version: 3.11.6 - '@types/jest': - specifier: ^29.5.12 - version: 29.5.14 '@types/js-yaml': specifier: ^4.0.5 version: 4.0.9 @@ -1222,8 +1219,8 @@ importers: specifier: ^2.0.7 version: 2.0.7(@types/express@4.17.21) jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + specifier: ^28.0.0 + version: 28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) less: specifier: ^4.1.2 version: 4.2.0 @@ -1248,9 +1245,6 @@ importers: tailwindcss: specifier: ^3.4.14 version: 3.4.14(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) - ts-jest: - specifier: ^29.2.3 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.23.1)(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.61)(typescript@5.6.3) @@ -3114,6 +3108,15 @@ packages: node-notifier: optional: true + '@jest/core@28.1.3': + resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + '@jest/core@29.7.0': resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3127,14 +3130,26 @@ packages: resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + '@jest/environment@28.1.3': + resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/environment@29.7.0': resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@28.1.3': + resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/expect-utils@29.7.0': resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect@28.1.3': + resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/expect@29.7.0': resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3143,6 +3158,10 @@ packages: resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + '@jest/fake-timers@28.1.3': + resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/fake-timers@29.7.0': resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3151,6 +3170,10 @@ packages: resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + '@jest/globals@28.1.3': + resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/globals@29.7.0': resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3164,6 +3187,15 @@ packages: node-notifier: optional: true + '@jest/reporters@28.1.3': + resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + '@jest/reporters@29.7.0': resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3185,6 +3217,10 @@ packages: resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + '@jest/source-map@28.1.2': + resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/source-map@29.6.3': resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3205,6 +3241,10 @@ packages: resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + '@jest/test-sequencer@28.1.3': + resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/test-sequencer@29.7.0': resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3213,6 +3253,10 @@ packages: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + '@jest/transform@28.1.3': + resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/transform@29.7.0': resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4202,6 +4246,9 @@ packages: '@sinonjs/fake-timers@8.1.0': resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + '@sinonjs/fake-timers@9.1.2': + resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + '@smithy/abort-controller@3.1.6': resolution: {integrity: sha512-0XuhuHQlEqbNQZp7QxxrFTdVWdwxch4vjxYgfInF91hZFkPxf9QDrdQka0KfxFMPqLNzSw0b95uGTrLliQUavQ==} engines: {node: '>=16.0.0'} @@ -5733,6 +5780,12 @@ packages: peerDependencies: '@babel/core': ^7.8.0 + babel-jest@28.1.3: + resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5761,6 +5814,10 @@ packages: resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + babel-plugin-jest-hoist@28.1.3: + resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + babel-plugin-jest-hoist@29.6.3: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5811,6 +5868,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + babel-preset-jest@28.1.3: + resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6958,6 +7021,10 @@ packages: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + diff-sequences@28.1.1: + resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7553,6 +7620,10 @@ packages: resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + expect@28.1.3: + resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8774,6 +8845,10 @@ packages: resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-changed-files@28.1.3: + resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-changed-files@29.7.0: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8782,6 +8857,10 @@ packages: resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-circus@28.1.3: + resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-circus@29.7.0: resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8796,6 +8875,16 @@ packages: node-notifier: optional: true + jest-cli@28.1.3: + resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + jest-cli@29.7.0: resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8815,6 +8904,18 @@ packages: ts-node: optional: true + jest-config@28.1.3: + resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + jest-config@29.7.0: resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8831,6 +8932,10 @@ packages: resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-diff@28.1.3: + resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8839,6 +8944,10 @@ packages: resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-docblock@28.1.1: + resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-docblock@29.7.0: resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8847,6 +8956,10 @@ packages: resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-each@28.1.3: + resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-each@29.7.0: resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8859,6 +8972,10 @@ packages: resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-environment-node@28.1.3: + resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-environment-node@29.7.0: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8867,6 +8984,10 @@ packages: resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-get-type@28.0.2: + resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8875,6 +8996,10 @@ packages: resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-haste-map@28.1.3: + resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-haste-map@29.7.0: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8887,6 +9012,10 @@ packages: resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-leak-detector@28.1.3: + resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-leak-detector@29.7.0: resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8895,6 +9024,10 @@ packages: resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-matcher-utils@28.1.3: + resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-matcher-utils@29.7.0: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8915,6 +9048,10 @@ packages: resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-mock@28.1.3: + resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-mock@29.7.0: resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8944,6 +9081,10 @@ packages: resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-resolve-dependencies@28.1.3: + resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-resolve-dependencies@29.7.0: resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8952,6 +9093,10 @@ packages: resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-resolve@28.1.3: + resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-resolve@29.7.0: resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8960,6 +9105,10 @@ packages: resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-runner@28.1.3: + resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-runner@29.7.0: resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8968,6 +9117,10 @@ packages: resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-runtime@28.1.3: + resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-runtime@29.7.0: resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8980,6 +9133,10 @@ packages: resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-snapshot@28.1.3: + resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-snapshot@29.7.0: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9000,6 +9157,10 @@ packages: resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + jest-validate@28.1.3: + resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-validate@29.7.0: resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9048,6 +9209,16 @@ packages: node-notifier: optional: true + jest@28.1.3: + resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + jest@29.7.0: resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -16553,6 +16724,41 @@ snapshots: - ts-node - utf-8-validate + '@jest/core@28.1.3(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3))': + dependencies: + '@jest/console': 28.1.3 + '@jest/reporters': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.19.61 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 28.1.3 + jest-config: 28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + jest-haste-map: 28.1.3 + jest-message-util: 28.1.3 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-resolve-dependencies: 28.1.3 + jest-runner: 28.1.3 + jest-runtime: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + jest-watcher: 28.1.3 + micromatch: 4.0.8 + pretty-format: 28.1.3 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3))': dependencies: '@jest/console': 29.7.0 @@ -16665,6 +16871,13 @@ snapshots: '@types/node': 18.19.61 jest-mock: 27.5.1 + '@jest/environment@28.1.3': + dependencies: + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.19.61 + jest-mock: 28.1.3 + '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 @@ -16672,10 +16885,21 @@ snapshots: '@types/node': 18.19.61 jest-mock: 29.7.0 + '@jest/expect-utils@28.1.3': + dependencies: + jest-get-type: 28.0.2 + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 + '@jest/expect@28.1.3': + dependencies: + expect: 28.1.3 + jest-snapshot: 28.1.3 + transitivePeerDependencies: + - supports-color + '@jest/expect@29.7.0': dependencies: expect: 29.7.0 @@ -16692,6 +16916,15 @@ snapshots: jest-mock: 27.5.1 jest-util: 27.5.1 + '@jest/fake-timers@28.1.3': + dependencies: + '@jest/types': 28.1.3 + '@sinonjs/fake-timers': 9.1.2 + '@types/node': 18.19.61 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-util: 28.1.3 + '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -16707,6 +16940,14 @@ snapshots: '@jest/types': 27.5.1 expect: 27.5.1 + '@jest/globals@28.1.3': + dependencies: + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/types': 28.1.3 + transitivePeerDependencies: + - supports-color + '@jest/globals@29.7.0': dependencies: '@jest/environment': 29.7.0 @@ -16746,6 +16987,36 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/reporters@28.1.3': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 18.19.61 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + jest-worker: 28.1.3 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + terminal-link: 2.1.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + '@jest/reporters@29.7.0': dependencies: '@bcoe/v8-coverage': 0.2.3 @@ -16789,6 +17060,12 @@ snapshots: graceful-fs: 4.2.11 source-map: 0.6.1 + '@jest/source-map@28.1.2': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + '@jest/source-map@29.6.3': dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -16825,6 +17102,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/test-sequencer@28.1.3': + dependencies: + '@jest/test-result': 28.1.3 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + slash: 3.0.0 + '@jest/test-sequencer@29.7.0': dependencies: '@jest/test-result': 29.7.0 @@ -16852,6 +17136,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/transform@28.1.3': + dependencies: + '@babel/core': 7.26.0 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + micromatch: 4.0.8 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + '@jest/transform@29.7.0': dependencies: '@babel/core': 7.26.0 @@ -17333,9 +17637,9 @@ snapshots: react-refresh: 0.11.0 schema-utils: 4.2.0 source-map: 0.7.4 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 optionalDependencies: - '@types/webpack': 5.28.5(webpack-cli@5.1.4) + '@types/webpack': 5.28.5 type-fest: 3.13.1 webpack-dev-server: 4.15.2(webpack@5.95.0) webpack-hot-middleware: 2.26.1 @@ -17959,6 +18263,10 @@ snapshots: dependencies: '@sinonjs/commons': 1.8.6 + '@sinonjs/fake-timers@9.1.2': + dependencies: + '@sinonjs/commons': 1.8.6 + '@smithy/abort-controller@3.1.6': dependencies: '@smithy/types': 3.6.0 @@ -19281,6 +19589,18 @@ snapshots: '@types/webidl-conversions@7.0.3': {} + '@types/webpack@5.28.5': + dependencies: + '@types/node': 18.19.61 + tapable: 2.2.1 + webpack: 5.95.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + optional: true + '@types/webpack@5.28.5(esbuild@0.23.1)': dependencies: '@types/node': 18.19.61 @@ -19293,11 +19613,11 @@ snapshots: - webpack-cli optional: true - '@types/webpack@5.28.5(webpack-cli@5.1.4)': + '@types/webpack@5.28.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))': dependencies: '@types/node': 18.19.61 tapable: 2.2.1 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) transitivePeerDependencies: - '@swc/core' - esbuild @@ -19605,14 +19925,14 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.95.0)': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)))': dependencies: - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) webpack-cli: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) '@webpack-cli/generators@3.0.7(encoding@0.1.13)(mem-fs@2.3.0)(prettier@2.8.8)(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) webpack-cli: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) yeoman-environment: 3.19.3 yeoman-generator: 5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3) @@ -19624,14 +19944,14 @@ snapshots: - mem-fs - supports-color - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.95.0)': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)))': dependencies: - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) webpack-cli: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.95.0)': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)))': dependencies: - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) webpack-cli: 5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0) '@xobotyi/scrollbar-width@1.9.5': {} @@ -20108,6 +20428,19 @@ snapshots: transitivePeerDependencies: - supports-color + babel-jest@28.1.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@jest/transform': 28.1.3 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 28.1.3(@babel/core@7.26.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + babel-jest@29.7.0(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -20128,7 +20461,7 @@ snapshots: loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.95.0(esbuild@0.23.1)): dependencies: @@ -20137,12 +20470,19 @@ snapshots: schema-utils: 4.2.0 webpack: 5.95.0(esbuild@0.23.1) + babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): + dependencies: + '@babel/core': 7.26.0 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.95.0): dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 babel-plugin-istanbul@6.1.1: dependencies: @@ -20161,6 +20501,13 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 + babel-plugin-jest-hoist@28.1.3: + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.25.9 @@ -20236,6 +20583,12 @@ snapshots: babel-plugin-jest-hoist: 27.5.1 babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + babel-preset-jest@28.1.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + babel-plugin-jest-hoist: 28.1.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + babel-preset-jest@29.6.3(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -20708,10 +21061,10 @@ snapshots: clean-stack@2.2.0: {} - clean-webpack-plugin@4.0.0(webpack@5.95.0): + clean-webpack-plugin@4.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): dependencies: del: 4.1.1 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) cli-boxes@3.0.0: {} @@ -20939,7 +21292,7 @@ snapshots: dependencies: toggle-selection: 1.0.6 - copy-webpack-plugin@12.0.2(webpack@5.95.0): + copy-webpack-plugin@12.0.2(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -20947,7 +21300,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) core-js-compat@3.38.1: dependencies: @@ -21168,7 +21521,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 css-minimizer-webpack-plugin@3.4.1(webpack@5.95.0): dependencies: @@ -21178,7 +21531,7 @@ snapshots: schema-utils: 4.2.0 serialize-javascript: 6.0.2 source-map: 0.6.1 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 css-prefers-color-scheme@6.0.3(postcss@8.4.47): dependencies: @@ -21572,6 +21925,8 @@ snapshots: diff-sequences@27.5.1: {} + diff-sequences@28.1.1: {} + diff-sequences@29.6.3: {} diff@4.0.2: {} @@ -22286,7 +22641,7 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 schema-utils: 4.2.0 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 eslint@8.57.1: dependencies: @@ -22401,6 +22756,14 @@ snapshots: jest-matcher-utils: 27.5.1 jest-message-util: 27.5.1 + expect@28.1.3: + dependencies: + '@jest/expect-utils': 28.1.3 + jest-get-type: 28.0.2 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 @@ -22573,7 +22936,7 @@ snapshots: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 file-system-cache@2.3.0: dependencies: @@ -22747,7 +23110,7 @@ snapshots: semver: 7.6.3 tapable: 1.1.3 typescript: 5.6.3 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 optionalDependencies: eslint: 8.57.1 @@ -23322,7 +23685,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 htmlencode@0.0.4: {} @@ -23895,6 +24258,11 @@ snapshots: execa: 5.1.1 throat: 6.0.2 + jest-changed-files@28.1.3: + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + jest-changed-files@29.7.0: dependencies: execa: 5.1.1 @@ -23925,6 +24293,30 @@ snapshots: transitivePeerDependencies: - supports-color + jest-circus@28.1.3: + dependencies: + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.19.61 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 28.1.3 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-runtime: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + p-limit: 3.1.0 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + jest-circus@29.7.0(babel-plugin-macros@3.1.0): dependencies: '@jest/environment': 29.7.0 @@ -23972,6 +24364,25 @@ snapshots: - ts-node - utf-8-validate + jest-cli@28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): + dependencies: + '@jest/core': 28.1.3(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.2.0 + jest-config: 28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + jest-util: 28.1.3 + jest-validate: 28.1.3 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + jest-cli@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) @@ -24082,6 +24493,36 @@ snapshots: - supports-color - utf-8-validate + jest-config@28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): + dependencies: + '@babel/core': 7.26.0 + '@jest/test-sequencer': 28.1.3 + '@jest/types': 28.1.3 + babel-jest: 28.1.3(@babel/core@7.26.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 28.1.3 + jest-environment-node: 28.1.3 + jest-get-type: 28.0.2 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-runner: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 28.1.3 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 18.19.61 + ts-node: 10.9.2(@types/node@18.19.61)(typescript@5.6.3) + transitivePeerDependencies: + - supports-color + jest-config@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): dependencies: '@babel/core': 7.26.0 @@ -24213,6 +24654,13 @@ snapshots: jest-get-type: 27.5.1 pretty-format: 27.5.1 + jest-diff@28.1.3: + dependencies: + chalk: 4.1.2 + diff-sequences: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -24224,6 +24672,10 @@ snapshots: dependencies: detect-newline: 3.1.0 + jest-docblock@28.1.1: + dependencies: + detect-newline: 3.1.0 + jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 @@ -24236,6 +24688,14 @@ snapshots: jest-util: 27.5.1 pretty-format: 27.5.1 + jest-each@28.1.3: + dependencies: + '@jest/types': 28.1.3 + chalk: 4.1.2 + jest-get-type: 28.0.2 + jest-util: 28.1.3 + pretty-format: 28.1.3 + jest-each@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -24268,6 +24728,15 @@ snapshots: jest-mock: 27.5.1 jest-util: 27.5.1 + jest-environment-node@28.1.3: + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.19.61 + jest-mock: 28.1.3 + jest-util: 28.1.3 + jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -24279,6 +24748,8 @@ snapshots: jest-get-type@27.5.1: {} + jest-get-type@28.0.2: {} + jest-get-type@29.6.3: {} jest-haste-map@27.5.1: @@ -24298,6 +24769,22 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + jest-haste-map@28.1.3: + dependencies: + '@jest/types': 28.1.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 18.19.61 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + jest-worker: 28.1.3 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -24341,6 +24828,11 @@ snapshots: jest-get-type: 27.5.1 pretty-format: 27.5.1 + jest-leak-detector@28.1.3: + dependencies: + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + jest-leak-detector@29.7.0: dependencies: jest-get-type: 29.6.3 @@ -24353,6 +24845,13 @@ snapshots: jest-get-type: 27.5.1 pretty-format: 27.5.1 + jest-matcher-utils@28.1.3: + dependencies: + chalk: 4.1.2 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 @@ -24401,6 +24900,11 @@ snapshots: '@jest/types': 27.5.1 '@types/node': 18.19.61 + jest-mock@28.1.3: + dependencies: + '@jest/types': 28.1.3 + '@types/node': 18.19.61 + jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -24411,6 +24915,10 @@ snapshots: optionalDependencies: jest-resolve: 27.5.1 + jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): + optionalDependencies: + jest-resolve: 28.1.3 + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): optionalDependencies: jest-resolve: 29.7.0 @@ -24429,6 +24937,13 @@ snapshots: transitivePeerDependencies: - supports-color + jest-resolve-dependencies@28.1.3: + dependencies: + jest-regex-util: 28.0.2 + jest-snapshot: 28.1.3 + transitivePeerDependencies: + - supports-color + jest-resolve-dependencies@29.7.0: dependencies: jest-regex-util: 29.6.3 @@ -24449,6 +24964,18 @@ snapshots: resolve.exports: 1.1.1 slash: 3.0.0 + jest-resolve@28.1.3: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + jest-pnp-resolver: 1.2.3(jest-resolve@28.1.3) + jest-util: 28.1.3 + jest-validate: 28.1.3 + resolve: 1.22.8 + resolve.exports: 1.1.1 + slash: 3.0.0 + jest-resolve@29.7.0: dependencies: chalk: 4.1.2 @@ -24490,6 +25017,32 @@ snapshots: - supports-color - utf-8-validate + jest-runner@28.1.3: + dependencies: + '@jest/console': 28.1.3 + '@jest/environment': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.19.61 + chalk: 4.1.2 + emittery: 0.10.2 + graceful-fs: 4.2.11 + jest-docblock: 28.1.1 + jest-environment-node: 28.1.3 + jest-haste-map: 28.1.3 + jest-leak-detector: 28.1.3 + jest-message-util: 28.1.3 + jest-resolve: 28.1.3 + jest-runtime: 28.1.3 + jest-util: 28.1.3 + jest-watcher: 28.1.3 + jest-worker: 28.1.3 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + jest-runner@29.7.0: dependencies: '@jest/console': 29.7.0 @@ -24543,6 +25096,33 @@ snapshots: transitivePeerDependencies: - supports-color + jest-runtime@28.1.3: + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/globals': 28.1.3 + '@jest/source-map': 28.1.2 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + chalk: 4.1.2 + cjs-module-lexer: 1.4.1 + collect-v8-coverage: 1.0.2 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + jest-runtime@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -24602,6 +25182,34 @@ snapshots: transitivePeerDependencies: - supports-color + jest-snapshot@28.1.3: + dependencies: + '@babel/core': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + '@jest/expect-utils': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/babel__traverse': 7.20.6 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + chalk: 4.1.2 + expect: 28.1.3 + graceful-fs: 4.2.11 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + jest-haste-map: 28.1.3 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + natural-compare: 1.4.0 + pretty-format: 28.1.3 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + jest-snapshot@29.7.0: dependencies: '@babel/core': 7.26.0 @@ -24663,6 +25271,15 @@ snapshots: leven: 3.1.0 pretty-format: 27.5.1 + jest-validate@28.1.3: + dependencies: + '@jest/types': 28.1.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 28.0.2 + leven: 3.1.0 + pretty-format: 28.1.3 + jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -24752,6 +25369,17 @@ snapshots: - ts-node - utf-8-validate + jest@28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): + dependencies: + '@jest/core': 28.1.3(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + '@jest/types': 28.1.3 + import-local: 3.2.0 + jest-cli: 28.1.3(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + jest@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) @@ -25477,7 +26105,7 @@ snapshots: dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 minimalistic-assert@1.0.1: {} @@ -26272,10 +26900,10 @@ snapshots: node-int64@0.4.0: {} - node-loader@2.0.0(webpack@5.95.0): + node-loader@2.0.0(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): dependencies: loader-utils: 2.0.4 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) node-polyfill-webpack-plugin@2.0.1(webpack@5.95.0(esbuild@0.23.1)): dependencies: @@ -27188,7 +27816,7 @@ snapshots: klona: 2.0.6 postcss: 8.4.47 semver: 7.6.3 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 postcss-loader@8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.95.0(esbuild@0.23.1)): dependencies: @@ -27887,7 +28515,7 @@ snapshots: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 rc-align@4.0.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -28301,7 +28929,7 @@ snapshots: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -28443,7 +29071,7 @@ snapshots: style-loader: 3.3.4(webpack@5.95.0) tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) terser-webpack-plugin: 5.3.10(webpack@5.95.0) - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 webpack-dev-server: 4.15.2(webpack@5.95.0) webpack-manifest-plugin: 4.1.1(webpack@5.95.0) workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.95.0) @@ -28974,7 +29602,7 @@ snapshots: dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 sass-loader@13.3.3(webpack@5.95.0(esbuild@0.23.1)): dependencies: @@ -29281,7 +29909,7 @@ snapshots: abab: 2.0.6 iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 source-map-support@0.5.13: dependencies: @@ -29619,7 +30247,7 @@ snapshots: style-loader@3.3.4(webpack@5.95.0): dependencies: - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 styled-jsx@5.1.6(@babel/core@7.26.0)(react@18.3.1): dependencies: @@ -29828,6 +30456,15 @@ snapshots: optionalDependencies: esbuild: 0.23.1 + terser-webpack-plugin@5.3.10(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.36.0 + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) + terser-webpack-plugin@5.3.10(webpack@5.95.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -29835,7 +30472,7 @@ snapshots: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 terser@5.36.0: dependencies: @@ -30004,12 +30641,12 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.23.1)(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + jest: 29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -30022,14 +30659,13 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - esbuild: 0.23.1 - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.61)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) + jest: 29.7.0(@types/node@18.19.61)(ts-node@10.9.2(@types/node@18.19.61)(typescript@5.6.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -30081,7 +30717,7 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - ts-loader@9.5.1(typescript@5.6.3)(webpack@5.95.0): + ts-loader@9.5.1(typescript@5.6.3)(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))): dependencies: chalk: 4.1.2 enhanced-resolve: 5.17.1 @@ -30089,7 +30725,7 @@ snapshots: semver: 7.6.3 source-map: 0.7.4 typescript: 5.6.3 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) ts-morph@13.0.3: dependencies: @@ -30641,9 +31277,9 @@ snapshots: webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.95.0) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.95.0) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.95.0) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.6 @@ -30652,7 +31288,7 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)) webpack-merge: 5.10.0 optionalDependencies: '@webpack-cli/generators': 3.0.7(encoding@0.1.13)(mem-fs@2.3.0)(prettier@2.8.8)(webpack-cli@5.1.4)(webpack@5.95.0) @@ -30674,7 +31310,7 @@ snapshots: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 webpack-dev-middleware@6.1.3(webpack@5.95.0(esbuild@0.23.1)): dependencies: @@ -30760,7 +31396,7 @@ snapshots: webpack-dev-middleware: 5.3.4(webpack@5.95.0) ws: 8.18.0 optionalDependencies: - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 transitivePeerDependencies: - bufferutil - debug @@ -30776,7 +31412,7 @@ snapshots: webpack-manifest-plugin@4.1.1(webpack@5.95.0): dependencies: tapable: 2.2.1 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 webpack-sources: 2.3.1 webpack-merge@5.10.0: @@ -30799,6 +31435,36 @@ snapshots: webpack-virtual-modules@0.6.2: {} + webpack@5.95.0: + dependencies: + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) + browserslist: 4.24.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.95.0) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + webpack@5.95.0(esbuild@0.23.1): dependencies: '@types/estree': 1.0.6 @@ -30829,7 +31495,7 @@ snapshots: - esbuild - uglify-js - webpack@5.95.0(webpack-cli@5.1.4): + webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0)): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 @@ -30851,7 +31517,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.95.0) + terser-webpack-plugin: 5.3.10(webpack@5.95.0(webpack-cli@5.1.4(@webpack-cli/generators@3.0.7)(webpack@5.95.0))) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: @@ -31087,7 +31753,7 @@ snapshots: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 - webpack: 5.95.0(webpack-cli@5.1.4) + webpack: 5.95.0 webpack-sources: 1.4.3 workbox-build: 6.6.0(@types/babel__core@7.20.5) transitivePeerDependencies: From 8a056472a8243c05cf032373c6d5211a88160f0b Mon Sep 17 00:00:00 2001 From: Pedro Lopes Date: Thu, 12 Dec 2024 17:16:03 -0300 Subject: [PATCH 09/12] fix: change oidc oauth types import path --- webapps/console/lib/oidc.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapps/console/lib/oidc.ts b/webapps/console/lib/oidc.ts index f0d47418b..127933e79 100644 --- a/webapps/console/lib/oidc.ts +++ b/webapps/console/lib/oidc.ts @@ -1,4 +1,4 @@ -import type { OAuthConfig, OAuthUserConfig } from "next-auth/src/providers"; +import type { OAuthConfig, OAuthUserConfig } from "next-auth/providers/oauth"; import { ApiError } from "./shared/errors"; export interface OIDCProfile extends Record { From 13feb34a9402e071531d795f90c7a36b27cab33b Mon Sep 17 00:00:00 2001 From: Ildar Nurislamov Date: Tue, 17 Dec 2024 16:58:48 +0400 Subject: [PATCH 10/12] Fix for auth provider check --- webapps/console/pages/signin.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapps/console/pages/signin.tsx b/webapps/console/pages/signin.tsx index 015fd5a0f..440e8afbf 100644 --- a/webapps/console/pages/signin.tsx +++ b/webapps/console/pages/signin.tsx @@ -170,7 +170,7 @@ export async function getServerSideProps(context) { if (process.env.FIREBASE_AUTH) { throw new Error(`Firebase auth is enabled. This page should not be used.`); } - if (!githubLoginEnabled && !credentialsLoginEnabled) { + if (!githubLoginEnabled && !credentialsLoginEnabled && !oidcLoginConfig) { throw new Error(`No auth providers are enabled found. Available providers: github, credentials`); } return { From 12f6e8803095fba60780c85fb9eab695b4a18315 Mon Sep 17 00:00:00 2001 From: Ildar Nurislamov Date: Tue, 17 Dec 2024 17:08:03 +0400 Subject: [PATCH 11/12] visual tweaks --- webapps/console/pages/signin.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/webapps/console/pages/signin.tsx b/webapps/console/pages/signin.tsx index 440e8afbf..40f761471 100644 --- a/webapps/console/pages/signin.tsx +++ b/webapps/console/pages/signin.tsx @@ -140,13 +140,13 @@ const NextAuthSignInPage = ({ csrfToken, providers: { github, oidc, credentials ); } return ( -

+
-
+
{credentials.enabled && } - {credentials.enabled && (github.enabled || oidc.enabled) &&
} + {credentials.enabled && (github.enabled || oidc.enabled) &&
} {github.enabled && } {oidc.enabled && }
@@ -155,7 +155,7 @@ const NextAuthSignInPage = ({ csrfToken, providers: { github, oidc, credentials Something went wrong. Please try again. Error code: {router.query.error}
)} - {!app.disableSignup && github.enabled && ( + {!app.disableSignup && (github.enabled || oidc.enabled) && (
Automatic signup is enabled for this instance. Sign in with github and if you don't have an account, a new account will be created automatically. This account won't have any access to pre-existing project unless the From 1ac7d92d038baa6af9c2feb82c3742132805d780 Mon Sep 17 00:00:00 2001 From: Ildar Nurislamov Date: Tue, 17 Dec 2024 17:43:39 +0400 Subject: [PATCH 12/12] visual tweaks --- webapps/console/pages/signin.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapps/console/pages/signin.tsx b/webapps/console/pages/signin.tsx index 40f761471..ac9530d0c 100644 --- a/webapps/console/pages/signin.tsx +++ b/webapps/console/pages/signin.tsx @@ -140,7 +140,7 @@ const NextAuthSignInPage = ({ csrfToken, providers: { github, oidc, credentials ); } return ( -
+