From 39b83b30af6ef3c04014b16fa2e9de43bc3bea30 Mon Sep 17 00:00:00 2001 From: J7SUS Date: Thu, 16 Jan 2025 16:22:13 +0100 Subject: [PATCH 01/16] feat: Add Planned Changes App.js comments --- client/src/App.jsx | 42 +++++++++++++++++++++++++++++++++++++++--- server/index.js | 3 ++- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/client/src/App.jsx b/client/src/App.jsx index f9cdbc2..70de068 100644 --- a/client/src/App.jsx +++ b/client/src/App.jsx @@ -11,41 +11,77 @@ import { Routes, Route } from "react-router"; import { Profile } from './components/Profile'; import { SearchResultPage } from './components/SearchResultPage'; +//!Authentication context. This will remain here for now but could be moved to a separate file if the project scales. export const AuthContext = createContext(null); + + function App() { + + useEffect(() => { + console.log(` + πŸš€ Starting the Cooksphere app! + ✨ Shoutout to Murak for the incredible work on this project! + πŸŽ“ The only reason I'm making changes is because CodeWorks demands it. + If it were up to me, I'd leave this masterpiece untouched. πŸ™Œ + Let's call this "forced improvement." πŸ˜… + `); + }, []); + + //! States to manage categories, latest recipes, and the current user. + //! This logic will be refactored into a custom hook (`useFetchData`). + const [categories, setCategories] = useState([]) const [latest, setLatest] = useState([]) const [currentUser, setCurrentUser] = useState({}); - + + //*| The logic for fetching data (categories, recipes, and user login) | + //*| via useEffect will be moved into a custom hook named useFetchData.| + //! useEffect to fetch categories. useEffect(() => { getCategories() .then(data => setCategories(data)) .catch(e => console.log(e)); }, []); - + + //! useEffect to fetch the latest recipes. useEffect(() => { getLatestRecipes() .then(data => setLatest(data)) .catch(e => console.log(e)); }, []); - + + //! useEffect to log in using test credentials. useEffect(() => { login({email: 'zappe.thomson@test.com', password: 'Test123!'}) .then(data => setCurrentUser(data)) .catch(e => console.log(e)); }, []); + + //*| All routes inside will be moved to a separate component | + //*| called AppRoutes to make App.jsx more focused on managing global | + //*| state and context. | + return ( <> + {/* Context provider to share use data across the app */} + + {/* Navbar component will remain unchaged */}
+ + {/* Route definitions > will be move to separate file for clarity (AppRoutes) */} + + {/* Hero component will remains unchanged */}
+ + {/* In CategoryList and RecipeList, the data logic will be centralized in the custom hook */}
diff --git a/server/index.js b/server/index.js index fc696df..dd08d06 100644 --- a/server/index.js +++ b/server/index.js @@ -11,5 +11,6 @@ app.use(express.json()); app.use(router); app.listen(PORT, () => { - console.log(`Server listening on port ${PORT}`); + console.log(`Server listening on port ${PORT} πŸ™Œβœ¨`); + console.log("") }); From 9818cf11641b8b7a462cb9bc4fba6032ba69e8f5 Mon Sep 17 00:00:00 2001 From: J7SUS Date: Thu, 16 Jan 2025 17:24:17 +0100 Subject: [PATCH 02/16] feat: add TS dependencies, add tsconfig.json (include : [src]), Define data interfaces --- client/tsconfig.json | 112 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 client/tsconfig.json diff --git a/client/tsconfig.json b/client/tsconfig.json new file mode 100644 index 0000000..4959c3b --- /dev/null +++ b/client/tsconfig.json @@ -0,0 +1,112 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "rewriteRelativeImportExtensions": true, /* Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "noUncheckedSideEffectImports": true, /* Check side effect imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": ["src"] +} From 3ac51ad1b2fbd7b25d9d97d397bc2622a4b76fdd Mon Sep 17 00:00:00 2001 From: J7SUS Date: Thu, 16 Jan 2025 17:54:48 +0100 Subject: [PATCH 03/16] feat: Rename App.jsx to App.tsx, add allowJs: true to tsconfig.json --- client/src/App.tsx | 102 ++++++++++++++++++++++++++++++++++++++++++ client/src/types.d.ts | 17 +++++++ client/tsconfig.json | 2 +- 3 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 client/src/App.tsx create mode 100644 client/src/types.d.ts diff --git a/client/src/App.tsx b/client/src/App.tsx new file mode 100644 index 0000000..70de068 --- /dev/null +++ b/client/src/App.tsx @@ -0,0 +1,102 @@ +import { createContext, useEffect, useState } from 'react'; +import './App.css'; +import { getCategories, getLatestRecipes, login } from './ApiClient'; +import { CategoryList } from './components/CategoryList'; +import { Hero } from './components/Hero'; +import { Navbar } from './components/Navbar'; +import { CategoryPage } from './components/CategoryPage'; +import { RecipeDetailsPage } from './components/recipedetailspage/RecipeDetailsPage'; +import { RecipeList } from './components/RecipeList'; +import { Routes, Route } from "react-router"; +import { Profile } from './components/Profile'; +import { SearchResultPage } from './components/SearchResultPage'; + +//!Authentication context. This will remain here for now but could be moved to a separate file if the project scales. +export const AuthContext = createContext(null); + + +function App() { + + useEffect(() => { + console.log(` + πŸš€ Starting the Cooksphere app! + ✨ Shoutout to Murak for the incredible work on this project! + πŸŽ“ The only reason I'm making changes is because CodeWorks demands it. + If it were up to me, I'd leave this masterpiece untouched. πŸ™Œ + Let's call this "forced improvement." πŸ˜… + `); + }, []); + + //! States to manage categories, latest recipes, and the current user. + //! This logic will be refactored into a custom hook (`useFetchData`). + + const [categories, setCategories] = useState([]) + const [latest, setLatest] = useState([]) + + const [currentUser, setCurrentUser] = useState({}); + + //*| The logic for fetching data (categories, recipes, and user login) | + //*| via useEffect will be moved into a custom hook named useFetchData.| + //! useEffect to fetch categories. + useEffect(() => { + getCategories() + .then(data => setCategories(data)) + .catch(e => console.log(e)); + }, []); + + //! useEffect to fetch the latest recipes. + useEffect(() => { + getLatestRecipes() + .then(data => setLatest(data)) + .catch(e => console.log(e)); + }, []); + + //! useEffect to log in using test credentials. + useEffect(() => { + login({email: 'zappe.thomson@test.com', password: 'Test123!'}) + .then(data => setCurrentUser(data)) + .catch(e => console.log(e)); + }, []); + + + //*| All routes inside will be moved to a separate component | + //*| called AppRoutes to make App.jsx more focused on managing global | + //*| state and context. | + + return ( + <> + {/* Context provider to share use data across the app */} + + + {/* Navbar component will remain unchaged */} + +
+ + {/* Route definitions > will be move to separate file for clarity (AppRoutes) */} + + + + {/* Hero component will remains unchanged */} + +
+ + {/* In CategoryList and RecipeList, the data logic will be centralized in the custom hook */} + +
+ +
+ + }/> + }/> + }/> + }/> + }/> +
+
+
+ + ) +} + +export default App; diff --git a/client/src/types.d.ts b/client/src/types.d.ts new file mode 100644 index 0000000..7eaaff6 --- /dev/null +++ b/client/src/types.d.ts @@ -0,0 +1,17 @@ +export interface Category { + id: number; + name: string; +} + +export interface Recipe { + id: number; + title: string; + description: string; + imageUrl: string; +} + +export interface AuthUser { + id: number; + email: string; + name: string; +} \ No newline at end of file diff --git a/client/tsconfig.json b/client/tsconfig.json index 4959c3b..d488eb0 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -46,7 +46,7 @@ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ From f692968b73bf9f6718fa6213fad1736e304731fc Mon Sep 17 00:00:00 2001 From: J7SUS Date: Thu, 16 Jan 2025 23:29:41 +0100 Subject: [PATCH 04/16] feat: add contex/authContex, fix AuthContex path: Navbar, Profile, Upload, GeneralCard, Reviews --- client/src/App.tsx | 54 ++++++++++--------- client/src/components/Navbar.jsx | 11 ++-- client/src/components/Profile.jsx | 17 ++++-- client/src/components/Upload.jsx | 4 +- .../recipedetailspage/GeneralCard.jsx | 4 +- .../components/recipedetailspage/Reviews.jsx | 4 +- client/src/context/AuthContext.ts | 12 +++++ client/src/hooks/useFetchData.ts | 33 ++++++++++++ client/src/types.d.ts | 32 ++++++++--- server/models/index.js | 2 +- 10 files changed, 127 insertions(+), 46 deletions(-) create mode 100644 client/src/context/AuthContext.ts create mode 100644 client/src/hooks/useFetchData.ts diff --git a/client/src/App.tsx b/client/src/App.tsx index 70de068..b108361 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -1,6 +1,10 @@ +import { AuthContex } from './context/AuthContext'; +import { useFetchData } from './hooks/useFetchData'; + import { createContext, useEffect, useState } from 'react'; import './App.css'; import { getCategories, getLatestRecipes, login } from './ApiClient'; + import { CategoryList } from './components/CategoryList'; import { Hero } from './components/Hero'; import { Navbar } from './components/Navbar'; @@ -11,12 +15,15 @@ import { Routes, Route } from "react-router"; import { Profile } from './components/Profile'; import { SearchResultPage } from './components/SearchResultPage'; +// import { User } from './types'; + //!Authentication context. This will remain here for now but could be moved to a separate file if the project scales. -export const AuthContext = createContext(null); +// export const AuthContext = createContext(null); function App() { - + const { categories, latestRecipes, currentUser } = useFetchData(); + useEffect(() => { console.log(` πŸš€ Starting the Cooksphere app! @@ -30,33 +37,32 @@ function App() { //! States to manage categories, latest recipes, and the current user. //! This logic will be refactored into a custom hook (`useFetchData`). - const [categories, setCategories] = useState([]) - const [latest, setLatest] = useState([]) - - const [currentUser, setCurrentUser] = useState({}); + // const [categories, setCategories] = useState([]) + // const [latest, setLatest] = useState([]) + // const [currentUser, setCurrentUser] = useState({}); //*| The logic for fetching data (categories, recipes, and user login) | //*| via useEffect will be moved into a custom hook named useFetchData.| //! useEffect to fetch categories. - useEffect(() => { - getCategories() - .then(data => setCategories(data)) - .catch(e => console.log(e)); - }, []); + // useEffect(() => { + // getCategories() + // .then(data => setCategories(data)) + // .catch(e => console.log(e)); + // }, []); //! useEffect to fetch the latest recipes. - useEffect(() => { - getLatestRecipes() - .then(data => setLatest(data)) - .catch(e => console.log(e)); - }, []); + // useEffect(() => { + // getLatestRecipes() + // .then(data => setLatest(data)) + // .catch(e => console.log(e)); + // }, []); //! useEffect to log in using test credentials. - useEffect(() => { - login({email: 'zappe.thomson@test.com', password: 'Test123!'}) - .then(data => setCurrentUser(data)) - .catch(e => console.log(e)); - }, []); + // useEffect(() => { + // login({email: 'zappe.thomson@test.com', password: 'Test123!'}) + // .then(data => setCurrentUser(data)) + // .catch(e => console.log(e)); + // }, []); //*| All routes inside will be moved to a separate component | @@ -66,7 +72,7 @@ function App() { return ( <> {/* Context provider to share use data across the app */} - + {/* Navbar component will remain unchaged */} @@ -84,7 +90,7 @@ function App() { {/* In CategoryList and RecipeList, the data logic will be centralized in the custom hook */}
- +
}/> @@ -94,7 +100,7 @@ function App() { }/>
-
+ ) } diff --git a/client/src/components/Navbar.jsx b/client/src/components/Navbar.jsx index fd856b7..370957f 100644 --- a/client/src/components/Navbar.jsx +++ b/client/src/components/Navbar.jsx @@ -1,9 +1,9 @@ import { useContext } from "react"; import { Link } from "react-router" -import { AuthContext } from '../App'; +import { AuthContex } from "../context/AuthContext"; export function Navbar () { - const currentUser = useContext(AuthContext); + const currentUser = useContext(AuthContex); return ( <>
@@ -15,7 +15,12 @@ export function Navbar () { - Profilepicture + Profilepicture + {/* Profilepicture */}
diff --git a/client/src/components/Profile.jsx b/client/src/components/Profile.jsx index ff4d18e..e1247db 100644 --- a/client/src/components/Profile.jsx +++ b/client/src/components/Profile.jsx @@ -1,10 +1,10 @@ import { useContext, useEffect, useState } from "react"; import { Popup } from "./Popup"; -import { AuthContext } from '../App'; +import { AuthContex } from "../context/AuthContext"; import { RecipeResults } from "./RecipeResults"; export function Profile () { - const currentUser = useContext(AuthContext); + const currentUser = useContext(AuthContex); const [visible, setVisible] = useState(false); const [favorites, setFavorites] = useState([]); const [uploaded, setUploaded] = useState([]); @@ -20,9 +20,15 @@ export function Profile () { } useEffect(() => { - if (currentUser.favoriteRecipes) { + if (currentUser?.favoriteRecipes) { setFavorites(currentUser.favoriteRecipes); + } else { + setFavorites([]); + } + if (currentUser?.uploadedRecipes) { setUploaded(currentUser.uploadedRecipes); + } else { + setUploaded([]); } }, [currentUser]); @@ -33,7 +39,10 @@ export function Profile () {
Profilepicture
-
{currentUser.firstname + ' ' + currentUser.lastname}
+ +
{currentUser ? `${currentUser.firstname} ${currentUser.lastname}` : 'Guest User'}
+ {/*
{currentUser.firstname + ' ' + currentUser.lastname}
*/} + +
diff --git a/client/src/components/Navbar.jsx b/client/src/components/Navbar.jsx index 370957f..0a160ac 100644 --- a/client/src/components/Navbar.jsx +++ b/client/src/components/Navbar.jsx @@ -12,7 +12,7 @@ export function Navbar () {

Cooksphere

Date: Mon, 20 Jan 2025 20:22:08 +0100 Subject: [PATCH 12/16] Testing Front-end --- client/cypress.config.ts | 9 + client/cypress/e2e/spec.cy.ts | 5 + client/cypress/fixtures/example.json | 5 + client/cypress/support/commands.ts | 37 + client/cypress/support/e2e.ts | 17 + client/package-lock.json | 3161 +++++++++++++++++++++++++- client/package.json | 11 +- client/src/App.test.tsx | 36 + client/tests/setup.ts | 1 + client/tsconfig.json | 5 +- client/vite.config.ts | 5 + 11 files changed, 3201 insertions(+), 91 deletions(-) create mode 100644 client/cypress.config.ts create mode 100644 client/cypress/e2e/spec.cy.ts create mode 100644 client/cypress/fixtures/example.json create mode 100644 client/cypress/support/commands.ts create mode 100644 client/cypress/support/e2e.ts create mode 100644 client/src/App.test.tsx create mode 100644 client/tests/setup.ts diff --git a/client/cypress.config.ts b/client/cypress.config.ts new file mode 100644 index 0000000..8fe2030 --- /dev/null +++ b/client/cypress.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from "cypress"; + +export default defineConfig({ + e2e: { + + baseUrl: "http://localhost:3000", + + }, +}); diff --git a/client/cypress/e2e/spec.cy.ts b/client/cypress/e2e/spec.cy.ts new file mode 100644 index 0000000..322992c --- /dev/null +++ b/client/cypress/e2e/spec.cy.ts @@ -0,0 +1,5 @@ +describe('template spec', () => { + it('passes', () => { + cy.visit('https://example.cypress.io') + }) +}) \ No newline at end of file diff --git a/client/cypress/fixtures/example.json b/client/cypress/fixtures/example.json new file mode 100644 index 0000000..02e4254 --- /dev/null +++ b/client/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} diff --git a/client/cypress/support/commands.ts b/client/cypress/support/commands.ts new file mode 100644 index 0000000..698b01a --- /dev/null +++ b/client/cypress/support/commands.ts @@ -0,0 +1,37 @@ +/// +// *********************************************** +// This example commands.ts shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) +// +// declare global { +// namespace Cypress { +// interface Chainable { +// login(email: string, password: string): Chainable +// drag(subject: string, options?: Partial): Chainable +// dismiss(subject: string, options?: Partial): Chainable +// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable +// } +// } +// } \ No newline at end of file diff --git a/client/cypress/support/e2e.ts b/client/cypress/support/e2e.ts new file mode 100644 index 0000000..e4e246e --- /dev/null +++ b/client/cypress/support/e2e.ts @@ -0,0 +1,17 @@ +// *********************************************************** +// This example support/e2e.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' \ No newline at end of file diff --git a/client/package-lock.json b/client/package-lock.json index b1c0e41..ec53383 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -11,25 +11,38 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-router": "^7.1.1", + "react-router-dom": "^7.1.3", "typescript": "^5.7.3" }, "devDependencies": { "@eslint/js": "^9.17.0", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.2.0", "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.20", + "cypress": "^14.0.0", "eslint": "^9.17.0", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-refresh": "^0.4.16", "globals": "^15.14.0", + "jsdom": "^26.0.0", "postcss": "^8.4.49", "tailwind-scrollbar": "^3.1.0", "tailwindcss": "^3.4.17", - "vite": "^6.0.5" + "vite": "^6.0.5", + "vitest": "^3.0.2" } }, + "node_modules/@adobe/css-tools": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", + "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -57,6 +70,27 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/css-color": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.3.tgz", + "integrity": "sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -281,6 +315,19 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", @@ -339,6 +386,183 @@ "node": ">=6.9.0" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", + "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", + "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", + "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@cypress/request": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.7.tgz", + "integrity": "sha512-LzxlLEMbBOPYB85uXrDqvD4MgcenjRBLIns3zyhx7vTPj/0u2eQhzXvPiGcaJrV38Q9dbkExWp6cOHPJ+EtFYg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~4.0.0", + "http-signature": "~1.4.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.13.1", + "safe-buffer": "^5.1.2", + "tough-cookie": "^5.0.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", @@ -1356,6 +1580,105 @@ "win32" ] }, + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", + "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.2.0.tgz", + "integrity": "sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1421,6 +1744,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "22.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "undici-types": "~6.20.0" + } + }, "node_modules/@types/prop-types": { "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", @@ -1449,6 +1783,31 @@ "@types/react": "^18.0.0" } }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sizzle": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", + "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@vitejs/plugin-react": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", @@ -1469,84 +1828,247 @@ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" } }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "node_modules/@vitest/expect": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.2.tgz", + "integrity": "sha512-dKSHLBcoZI+3pmP5hiZ7I5grNru2HRtEW8Z5Zp4IXog8QYcxhlox7JUPyIIFWfN53+3HW3KPLIl6nSzUGgKSuQ==", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "@vitest/spy": "3.0.2", + "@vitest/utils": "3.0.2", + "chai": "^5.1.2", + "tinyrainbow": "^2.0.0" }, - "engines": { - "node": ">=0.4.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/@vitest/mocker": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.2.tgz", + "integrity": "sha512-Hr09FoBf0jlwwSyzIF4Xw31OntpO3XtZjkccpcBf8FeVW3tpiyKlkeUzxS/txzHqpUCNIX157NaTySxedyZLvA==", "dev": true, "license": "MIT", + "dependencies": { + "@vitest/spy": "3.0.2", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@vitest/pretty-format": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.2.tgz", + "integrity": "sha512-yBohcBw/T/p0/JRgYD+IYcjCmuHzjC3WLAKsVE4/LwiubzZkE8N49/xIQ/KGQwDRA8PaviF8IRO8JMWMngdVVQ==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "tinyrainbow": "^2.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://opencollective.com/vitest" } }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@vitest/runner": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.2.tgz", + "integrity": "sha512-GHEsWoncrGxWuW8s405fVoDfSLk6RF2LCXp6XhevbtDjdDme1WV/eNmUueDfpY1IX3MJaCRelVCEXsT9cArfEg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@vitest/utils": "3.0.2", + "pathe": "^2.0.1" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://opencollective.com/vitest" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@vitest/snapshot": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.2.tgz", + "integrity": "sha512-h9s67yD4+g+JoYG0zPCo/cLTabpDqzqNdzMawmNPzDStTiwxwkyYM1v5lWE8gmGv3SVJ2DcxA2NpQJZJv9ym3g==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@vitest/pretty-format": "3.0.2", + "magic-string": "^0.30.17", + "pathe": "^2.0.1" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://opencollective.com/vitest" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "node_modules/@vitest/spy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.2.tgz", + "integrity": "sha512-8mI2iUn+PJFMT44e3ISA1R+K6ALVs47W6eriDTfXe6lFqlflID05MB4+rIFhmDSLBj8iBsZkzBYlgSkinxLzSQ==", "dev": true, - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.2.tgz", + "integrity": "sha512-Qu01ZYZlgHvDP02JnMBRpX43nRaZtNpIzw3C1clDXmn8eakgX6iQVGzTQ/NjkIr64WD8ioqOjkaYRVvHQI5qiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.0.2", + "loupe": "^3.1.2", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, @@ -1559,6 +2081,27 @@ "node": ">= 8" } }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -1573,6 +2116,16 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", @@ -1709,6 +2262,70 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.20", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", @@ -1763,6 +2380,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true, + "license": "MIT" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1770,6 +2404,37 @@ "dev": true, "license": "MIT" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -1783,6 +2448,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1840,29 +2519,84 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", "dev": true, "license": "MIT", "dependencies": { @@ -1931,6 +2665,30 @@ ], "license": "CC-BY-4.0" }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/chai": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1948,6 +2706,26 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -1986,6 +2764,168 @@ "node": ">= 6" } }, + "node_modules/ci-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2006,6 +2946,26 @@ "dev": true, "license": "MIT" }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -2016,6 +2976,16 @@ "node": ">= 6" } }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2039,6 +3009,13 @@ "node": ">=18" } }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2054,6 +3031,13 @@ "node": ">= 8" } }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -2067,6 +3051,20 @@ "node": ">=4" } }, + "node_modules/cssstyle": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz", + "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^2.8.2", + "rrweb-cssom": "^0.8.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -2074,6 +3072,131 @@ "dev": true, "license": "MIT" }, + "node_modules/cypress": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-14.0.0.tgz", + "integrity": "sha512-kEGqQr23so5IpKeg/dp6GVi7RlHx1NmW66o2a2Q4wk9gRaAblLZQSiZJuDI8UMC4LlG5OJ7Q6joAiqTrfRNbTw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@cypress/request": "^3.0.6", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.7.1", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "ci-info": "^4.0.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.3", + "tree-kill": "1.2.2", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + } + }, + "node_modules/cypress/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cypress/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -2128,6 +3251,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "dev": true, + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -2146,6 +3276,23 @@ } } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2189,6 +3336,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -2216,6 +3383,14 @@ "node": ">=0.10.0" } }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -2238,6 +3413,17 @@ "dev": true, "license": "MIT" }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.79", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.79.tgz", @@ -2252,6 +3438,66 @@ "dev": true, "license": "MIT" }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/enquirer/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/enquirer/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/es-abstract": { "version": "1.23.9", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", @@ -2366,6 +3612,13 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "dev": true, + "license": "MIT" + }, "node_modules/es-object-atoms": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", @@ -2674,29 +3927,138 @@ "estraverse": "^5.2.0" }, "engines": { - "node": ">=4.0" + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/expect-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", + "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==", "dev": true, - "license": "BSD-2-Clause", + "license": "Apache-2.0", "engines": { - "node": ">=4.0" + "node": ">=12.0.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2758,6 +4120,42 @@ "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -2849,6 +4247,31 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -2863,6 +4286,22 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2968,6 +4407,22 @@ "node": ">= 0.4" } }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", @@ -2986,6 +4441,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, "node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -3046,6 +4521,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globals": { "version": "15.14.0", "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", @@ -3089,6 +4580,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -3183,6 +4681,106 @@ "node": ">= 0.4" } }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-signature": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.18.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3220,6 +4818,26 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", @@ -3450,6 +5068,23 @@ "node": ">=0.10.0" } }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -3490,6 +5125,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -3538,6 +5190,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", @@ -3589,6 +5254,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -3649,6 +5334,13 @@ "dev": true, "license": "ISC" }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true, + "license": "MIT" + }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", @@ -3712,6 +5404,54 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", + "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -3732,6 +5472,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3746,6 +5493,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -3759,6 +5513,35 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -3785,6 +5568,16 @@ "json-buffer": "3.0.1" } }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "> 0.8" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3819,6 +5612,97 @@ "dev": true, "license": "MIT" }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -3835,6 +5719,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -3842,6 +5733,127 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -3854,6 +5866,13 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "dev": true, + "license": "MIT" + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3864,6 +5883,27 @@ "yallist": "^3.0.2" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -3874,6 +5914,13 @@ "node": ">= 0.4" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3898,6 +5945,49 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3911,6 +6001,16 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -3990,9 +6090,29 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, + "node_modules/nwsapi": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "dev": true, + "license": "MIT" + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -4110,6 +6230,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -4128,6 +6274,13 @@ "node": ">= 0.8.0" } }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true, + "license": "MIT" + }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -4178,6 +6331,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -4198,6 +6367,19 @@ "node": ">=6" } }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4249,6 +6431,37 @@ "dev": true, "license": "ISC" }, + "node_modules/pathe": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", + "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4480,6 +6693,78 @@ "node": ">= 0.8.0" } }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -4492,6 +6777,24 @@ "react-is": "^16.13.1" } }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -4502,6 +6805,22 @@ "node": ">=6" } }, + "node_modules/qs": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -4566,9 +6885,9 @@ } }, "node_modules/react-router": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.1.1.tgz", - "integrity": "sha512-39sXJkftkKWRZ2oJtHhCxmoCrBCULr/HAH4IT5DHlgu/Q0FCPV0S4Lx+abjDTx/74xoZzNYDYbOZWlJjruyuDQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.1.3.tgz", + "integrity": "sha512-EezYymLY6Guk/zLQ2vRA8WvdUhWFEj5fcE3RfWihhxXBW7+cd1LsIiA3lmx+KCmneAGQuyBv820o44L2+TtkSA==", "license": "MIT", "dependencies": { "@types/cookie": "^0.6.0", @@ -4589,6 +6908,22 @@ } } }, + "node_modules/react-router-dom": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.1.3.tgz", + "integrity": "sha512-qQGTE+77hleBzv9SIUIkGRvuFBQGagW+TQKy53UTZAO/3+YFNBYvRsNIZ1GT17yHbc63FylMOdS+m3oUriF1GA==", + "license": "MIT", + "dependencies": { + "react-router": "7.1.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -4612,6 +6947,20 @@ "node": ">=8.10.0" } }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -4635,6 +6984,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -4656,6 +7012,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "throttleit": "^1.0.0" + } + }, "node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -4684,6 +7050,27 @@ "node": ">=4" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -4695,6 +7082,13 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, "node_modules/rollup": { "version": "4.30.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.30.1.tgz", @@ -4734,6 +7128,13 @@ "fsevents": "~2.3.2" } }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4758,6 +7159,16 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -4778,6 +7189,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", @@ -4813,6 +7245,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -4986,6 +7438,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -4999,6 +7458,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -5009,6 +7483,46 @@ "node": ">=0.10.0" } }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "dev": true, + "license": "MIT" + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -5198,15 +7712,38 @@ "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, "engines": { "node": ">=8" } @@ -5273,6 +7810,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, "node_modules/tailwind-scrollbar": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/tailwind-scrollbar/-/tailwind-scrollbar-3.1.0.tgz", @@ -5368,6 +7912,97 @@ "node": ">=0.8" } }, + "node_modules/throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "6.1.73", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.73.tgz", + "integrity": "sha512-/h4bVmuEMm57c2uCiAf1Q9mlQk7cA22m+1Bu0K92vUUtTVT9D4mOFWD9r4WQuTULcG9eeZtNKhLl0Il1LdKGog==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.73" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.73", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.73.tgz", + "integrity": "sha512-k1g5eX87vxu3g//6XMn62y4qjayu4cYby/PF7Ksnh4F4uUK1Z1ze/mJ4a+y5OjdJ+cXRp+YTInZhH+FGdUWy1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5381,6 +8016,42 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", + "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -5388,12 +8059,39 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/turbo-stream": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", "license": "ISC" }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5407,6 +8105,19 @@ "node": ">= 0.8.0" } }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typed-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", @@ -5517,6 +8228,34 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", @@ -5565,6 +8304,31 @@ "dev": true, "license": "MIT" }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "node_modules/vite": { "version": "6.0.7", "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.7.tgz", @@ -5637,6 +8401,155 @@ } } }, + "node_modules/vite-node": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.2.tgz", + "integrity": "sha512-hsEQerBAHvVAbv40m3TFQe/lTEbOp7yDpyqMJqr2Tnd+W58+DEYOt+fluQgekOePcsNBmR77lpVAnIU2Xu4SvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.1", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.2.tgz", + "integrity": "sha512-5bzaHakQ0hmVVKLhfh/jXf6oETDBtgPo8tQCHYB+wftNgFJ+Hah67IsWc8ivx4vFL025Ow8UiuTf4W57z4izvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "3.0.2", + "@vitest/mocker": "3.0.2", + "@vitest/pretty-format": "^3.0.2", + "@vitest/runner": "3.0.2", + "@vitest/snapshot": "3.0.2", + "@vitest/spy": "3.0.2", + "@vitest/utils": "3.0.2", + "chai": "^5.1.2", + "debug": "^4.4.0", + "expect-type": "^1.1.0", + "magic-string": "^0.30.17", + "pathe": "^2.0.1", + "std-env": "^3.8.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.0.2", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.0.2", + "@vitest/ui": "3.0.2", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5741,6 +8654,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -5846,6 +8776,52 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -5866,6 +8842,17 @@ "node": ">= 14" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/client/package.json b/client/package.json index 7bca127..842038d 100644 --- a/client/package.json +++ b/client/package.json @@ -7,28 +7,35 @@ "dev": "vite", "build": "vite build", "lint": "eslint .", - "preview": "vite preview" + "preview": "vite preview", + "test": "vitest" }, "dependencies": { "react": "^18.3.1", "react-dom": "^18.3.1", "react-router": "^7.1.1", + "react-router-dom": "^7.1.3", "typescript": "^5.7.3" }, "devDependencies": { "@eslint/js": "^9.17.0", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.2.0", "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.20", + "cypress": "^14.0.0", "eslint": "^9.17.0", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-refresh": "^0.4.16", "globals": "^15.14.0", + "jsdom": "^26.0.0", "postcss": "^8.4.49", "tailwind-scrollbar": "^3.1.0", "tailwindcss": "^3.4.17", - "vite": "^6.0.5" + "vite": "^6.0.5", + "vitest": "^3.0.2" } } diff --git a/client/src/App.test.tsx b/client/src/App.test.tsx new file mode 100644 index 0000000..6fb749e --- /dev/null +++ b/client/src/App.test.tsx @@ -0,0 +1,36 @@ +import { render, screen } from '@testing-library/react'; +import { MemoryRouter } from 'react-router-dom'; +import { AuthContex } from './context/AuthContext'; +import { useFetchData } from './hooks/useFetchData'; +import App from './App'; + +// Mock the `useFetchData` hook +vi.mock('./hooks/useFetchData', () => ({ + useFetchData: vi.fn(), +})); + +describe('App Component', () => { + it('renders Navbar and AppRoutes with mock data', () => { + // Mocked data + (useFetchData as jest.Mock).mockReturnValue({ + categories: [{ id: '1', name: 'Desserts' }], + latestRecipes: [{ id: '101', name: 'Recipe 1' }], + currentUser: { name: 'Test User', email: 'test@example.com' }, + }); + + render( + + + + + + ); + + // Debug the rendered output + screen.debug(); + + // Assertions + expect(screen.getByText(/Desserts/i)).toBeInTheDocument(); + expect(screen.getByText(/Recipe 1/i)).toBeInTheDocument(); + }); +}); diff --git a/client/tests/setup.ts b/client/tests/setup.ts new file mode 100644 index 0000000..5a54682 --- /dev/null +++ b/client/tests/setup.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom'; // For jest-dom matchers like toBeInTheDocument diff --git a/client/tsconfig.json b/client/tsconfig.json index 8096fac..4e5e639 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -25,7 +25,7 @@ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ /* Modules */ - "module": "commonjs", /* Specify what module code is generated. */ + "module": "ESNext", /* Specify what module code is generated. */ // "rootDir": "./", /* Specify the root folder within your source files. */ // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ @@ -108,5 +108,6 @@ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, - "include": ["src"] + "include": ["src", "tests", "cypress.config.ts", + "cypress/**/*.ts", "cypress/**/*.cy.ts"] } diff --git a/client/vite.config.ts b/client/vite.config.ts index 8b0f57b..0d39a9b 100644 --- a/client/vite.config.ts +++ b/client/vite.config.ts @@ -4,4 +4,9 @@ import react from '@vitejs/plugin-react' // https://vite.dev/config/ export default defineConfig({ plugins: [react()], + test: { + globals: true, + environment: 'jsdom', + setupFiles: './tests/setup.ts', + }, }) From 2cdecfbd0537df6ffefb4befd2cfea1c5ca462dd Mon Sep 17 00:00:00 2001 From: Luis Miguel Lopez Estrada Date: Tue, 21 Jan 2025 13:34:04 +0100 Subject: [PATCH 13/16] Testing Cypress E2E --- client/cypress/e2e/spec.cy.ts | 18 +++++++++++++----- client/src/components/CategoryList.jsx | 2 +- client/src/components/Navbar.jsx | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/client/cypress/e2e/spec.cy.ts b/client/cypress/e2e/spec.cy.ts index 322992c..d973b06 100644 --- a/client/cypress/e2e/spec.cy.ts +++ b/client/cypress/e2e/spec.cy.ts @@ -1,5 +1,13 @@ -describe('template spec', () => { - it('passes', () => { - cy.visit('https://example.cypress.io') - }) -}) \ No newline at end of file +describe('cypress cooksphere', () => { + it('renders the default elements on the screen', () => { + cy.visit('http://localhost:5173/'); + cy.get('[data-testid="cypress-title"]').should('exist') + .should('have.text', 'Cooksphere'); + }); + + it('renders the categories on the screen', () => { + cy.visit('http://localhost:5173/'); + cy.get('[data-testid="listItem-1737462017379"]').should('exist'); + + }); +}); \ No newline at end of file diff --git a/client/src/components/CategoryList.jsx b/client/src/components/CategoryList.jsx index 93a52b4..4f3fe73 100644 --- a/client/src/components/CategoryList.jsx +++ b/client/src/components/CategoryList.jsx @@ -11,7 +11,7 @@ export function CategoryList ({title, listItems}) {
{listItem.name} - {listItem.name} + {listItem.name}
) diff --git a/client/src/components/Navbar.jsx b/client/src/components/Navbar.jsx index 0a160ac..d300d2c 100644 --- a/client/src/components/Navbar.jsx +++ b/client/src/components/Navbar.jsx @@ -10,7 +10,7 @@ export function Navbar () { Cooksphere Logo -

Cooksphere

+

Cooksphere

From dbbb2ab1f33f36b853f305748a931e3ae3e223a3 Mon Sep 17 00:00:00 2001 From: J7SUS Date: Tue, 21 Jan 2025 14:01:50 +0100 Subject: [PATCH 14/16] feat: add basic SERVER test with mocha chai --- server/index.js | 2 +- server/mocha.opts | 2 + server/models/index.js | 2 +- server/package-lock.json | 23193 ++++++++++++++++++++++++++++++++--- server/package.json | 70 +- server/router.js | 15 + server/test/server.test.js | 37 + 7 files changed, 21626 insertions(+), 1695 deletions(-) create mode 100644 server/mocha.opts create mode 100644 server/test/server.test.js diff --git a/server/index.js b/server/index.js index dd08d06..588066a 100644 --- a/server/index.js +++ b/server/index.js @@ -4,7 +4,7 @@ import express from 'express'; import router from './router.js' const app = express(); -const PORT = 3000; +const PORT = process.env.PORT || 3000; app.use(cors({origin: 'http://localhost:5173'})); app.use(express.json()); diff --git a/server/mocha.opts b/server/mocha.opts new file mode 100644 index 0000000..9b5e672 --- /dev/null +++ b/server/mocha.opts @@ -0,0 +1,2 @@ +--recursive +--watch-extensions ts,tsx \ No newline at end of file diff --git a/server/models/index.js b/server/models/index.js index 1ceb61d..d286cd6 100644 --- a/server/models/index.js +++ b/server/models/index.js @@ -4,7 +4,7 @@ import mongoose from "mongoose"; (async () => { try { await mongoose.connect("mongodb://127.0.0.1:27017/cooksphere"); - console.log("Connected⚑️ to ✨MongoDB"); + console.log("Connected to MongoDB πŸ”Œ"); } catch (e) { console.log(`MongoDB connection error: ${e}`) } diff --git a/server/package-lock.json b/server/package-lock.json index b20525b..f1e3726 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1,1693 +1,21516 @@ { + "name": "server", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { - "": { - "name": "server", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "bcrypt": "^5.1.1", - "cors": "^2.8.5", - "express": "^4.21.2", - "mongoose": "^8.9.5" - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "license": "BSD-3-Clause", - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", - "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", - "license": "MIT", - "dependencies": { - "sparse-bitfield": "^3.0.3" - } - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", - "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", - "license": "MIT" - }, - "node_modules/@types/whatwg-url": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", - "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", - "license": "MIT", - "dependencies": { - "@types/webidl-conversions": "*" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "license": "ISC" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "license": "ISC" - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/bcrypt": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", - "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.11", - "node-addon-api": "^5.0.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/bson": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", - "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", - "license": "Apache-2.0", - "engines": { - "node": ">=16.20.1" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "license": "ISC" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "license": "MIT" - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "license": "ISC" - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/kareem": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", - "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "license": "MIT" - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mongodb": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz", - "integrity": "sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.1", - "mongodb-connection-string-url": "^3.0.0" - }, - "engines": { - "node": ">=16.20.1" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", - "gcp-metadata": "^5.2.0", - "kerberos": "^2.0.1", - "mongodb-client-encryption": ">=6.0.0 <7", - "snappy": "^7.2.2", - "socks": "^2.7.1" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "gcp-metadata": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - }, - "socks": { - "optional": true - } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", - "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", - "license": "Apache-2.0", - "dependencies": { - "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^13.0.0" - } - }, - "node_modules/mongoose": { - "version": "8.9.5", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.9.5.tgz", - "integrity": "sha512-SPhOrgBm0nKV3b+IIHGqpUTOmgVL5Z3OO9AwkFEmvOZznXTvplbomstCnPOGAyungtRXE5pJTgKpKcZTdjeESg==", - "license": "MIT", - "dependencies": { - "bson": "^6.10.1", - "kareem": "2.6.3", - "mongodb": "~6.12.0", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "17.1.3" - }, - "engines": { - "node": ">=16.20.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "license": "MIT", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", - "license": "MIT" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "license": "ISC" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sift": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", - "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==", - "license": "MIT" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "license": "MIT", - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "license": "MIT", - "dependencies": { - "punycode": "^2.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", - "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", - "license": "MIT", - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - } + + + "": { + + + + "name": "server", + + + + "version": "1.0.0", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "bcrypt": "^5.1.1", + + + + + "cors": "^2.8.5", + + + + + "express": "^4.21.2", + + + + + "mongoose": "^8.9.5" + + + + }, + + + + "devDependencies": { + + + + + "@babel/core": "^7.26.0", + + + + + "@babel/preset-env": "^7.26.0", + + + + + "@types/chai": "^5.0.1", + + + + + "@types/express": "^5.0.0", + + + + + "@types/mocha": "^10.0.10", + + + + + "@types/supertest": "^6.0.2", + + + + + "chai": "^5.1.2", + + + + + "mocha": "^11.0.1", + + + + + "supertest": "^7.0.0" + + + + } + + + }, + + + "node_modules/@ampproject/remapping": { + + + + "version": "2.3.0", + + + + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + + + + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + + + + "dev": true, + + + + "license": "Apache-2.0", + + + + "dependencies": { + + + + + "@jridgewell/gen-mapping": "^0.3.5", + + + + + "@jridgewell/trace-mapping": "^0.3.24" + + + + }, + + + + "engines": { + + + + + "node": ">=6.0.0" + + + + } + + + }, + + + "node_modules/@babel/code-frame": { + + + + "version": "7.26.2", + + + + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + + + + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-validator-identifier": "^7.25.9", + + + + + "js-tokens": "^4.0.0", + + + + + "picocolors": "^1.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/compat-data": { + + + + "version": "7.26.5", + + + + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + + + + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/core": { + + + + "version": "7.26.0", + + + + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + + + + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@ampproject/remapping": "^2.2.0", + + + + + "@babel/code-frame": "^7.26.0", + + + + + "@babel/generator": "^7.26.0", + + + + + "@babel/helper-compilation-targets": "^7.25.9", + + + + + "@babel/helper-module-transforms": "^7.26.0", + + + + + "@babel/helpers": "^7.26.0", + + + + + "@babel/parser": "^7.26.0", + + + + + "@babel/template": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9", + + + + + "@babel/types": "^7.26.0", + + + + + "convert-source-map": "^2.0.0", + + + + + "debug": "^4.1.0", + + + + + "gensync": "^1.0.0-beta.2", + + + + + "json5": "^2.2.3", + + + + + "semver": "^6.3.1" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "funding": { + + + + + "type": "opencollective", + + + + + "url": "https://opencollective.com/babel" + + + + } + + + }, + + + "node_modules/@babel/core/node_modules/semver": { + + + + "version": "6.3.1", + + + + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + + + + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + + + + "dev": true, + + + + "license": "ISC", + + + + "bin": { + + + + + "semver": "bin/semver.js" + + + + } + + + }, + + + "node_modules/@babel/generator": { + + + + "version": "7.26.5", + + + + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + + + + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/parser": "^7.26.5", + + + + + "@babel/types": "^7.26.5", + + + + + "@jridgewell/gen-mapping": "^0.3.5", + + + + + "@jridgewell/trace-mapping": "^0.3.25", + + + + + "jsesc": "^3.0.2" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-annotate-as-pure": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + + + + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/types": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-compilation-targets": { + + + + "version": "7.26.5", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + + + + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/compat-data": "^7.26.5", + + + + + "@babel/helper-validator-option": "^7.25.9", + + + + + "browserslist": "^4.24.0", + + + + + "lru-cache": "^5.1.1", + + + + + "semver": "^6.3.1" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + + + + "version": "6.3.1", + + + + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + + + + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + + + + "dev": true, + + + + "license": "ISC", + + + + "bin": { + + + + + "semver": "bin/semver.js" + + + + } + + + }, + + + "node_modules/@babel/helper-create-class-features-plugin": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + + + + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-annotate-as-pure": "^7.25.9", + + + + + "@babel/helper-member-expression-to-functions": "^7.25.9", + + + + + "@babel/helper-optimise-call-expression": "^7.25.9", + + + + + "@babel/helper-replace-supers": "^7.25.9", + + + + + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9", + + + + + "semver": "^6.3.1" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + + + + "version": "6.3.1", + + + + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + + + + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + + + + "dev": true, + + + + "license": "ISC", + + + + "bin": { + + + + + "semver": "bin/semver.js" + + + + } + + + }, + + + "node_modules/@babel/helper-create-regexp-features-plugin": { + + + + "version": "7.26.3", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + + + + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-annotate-as-pure": "^7.25.9", + + + + + "regexpu-core": "^6.2.0", + + + + + "semver": "^6.3.1" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + + + + "version": "6.3.1", + + + + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + + + + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + + + + "dev": true, + + + + "license": "ISC", + + + + "bin": { + + + + + "semver": "bin/semver.js" + + + + } + + + }, + + + "node_modules/@babel/helper-define-polyfill-provider": { + + + + "version": "0.6.3", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + + + + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-compilation-targets": "^7.22.6", + + + + + "@babel/helper-plugin-utils": "^7.22.5", + + + + + "debug": "^4.1.1", + + + + + "lodash.debounce": "^4.0.8", + + + + + "resolve": "^1.14.2" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + + + + } + + + }, + + + "node_modules/@babel/helper-member-expression-to-functions": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + + + + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/traverse": "^7.25.9", + + + + + "@babel/types": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-module-imports": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + + + + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/traverse": "^7.25.9", + + + + + "@babel/types": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-module-transforms": { + + + + "version": "7.26.0", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + + + + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-module-imports": "^7.25.9", + + + + + "@babel/helper-validator-identifier": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/helper-optimise-call-expression": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + + + + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/types": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-plugin-utils": { + + + + "version": "7.26.5", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + + + + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-remap-async-to-generator": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + + + + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-annotate-as-pure": "^7.25.9", + + + + + "@babel/helper-wrap-function": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/helper-replace-supers": { + + + + "version": "7.26.5", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + + + + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-member-expression-to-functions": "^7.25.9", + + + + + "@babel/helper-optimise-call-expression": "^7.25.9", + + + + + "@babel/traverse": "^7.26.5" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + + + + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/traverse": "^7.25.9", + + + + + "@babel/types": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-string-parser": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + + + + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-validator-identifier": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + + + + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-validator-option": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + + + + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helper-wrap-function": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + + + + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/template": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9", + + + + + "@babel/types": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/helpers": { + + + + "version": "7.26.0", + + + + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + + + + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/template": "^7.25.9", + + + + + "@babel/types": "^7.26.0" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/parser": { + + + + "version": "7.26.5", + + + + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", + + + + "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/types": "^7.26.5" + + + + }, + + + + "bin": { + + + + + "parser": "bin/babel-parser.js" + + + + }, + + + + "engines": { + + + + + "node": ">=6.0.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + + + + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + + + + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + + + + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + + + + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + + + + + "@babel/plugin-transform-optional-chaining": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.13.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + + + + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-proposal-private-property-in-object": { + + + + "version": "7.21.0-placeholder-for-preset-env.2", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + + + + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-syntax-import-assertions": { + + + + "version": "7.26.0", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + + + + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-syntax-import-attributes": { + + + + "version": "7.26.0", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + + + + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + + + + "version": "7.18.6", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + + + + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + + + + + "@babel/helper-plugin-utils": "^7.18.6" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-arrow-functions": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + + + + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-async-generator-functions": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + + + + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/helper-remap-async-to-generator": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-async-to-generator": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + + + + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-module-imports": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/helper-remap-async-to-generator": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-block-scoped-functions": { + + + + "version": "7.26.5", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + + + + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.26.5" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-block-scoping": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + + + + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-class-properties": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + + + + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-class-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-class-static-block": { + + + + "version": "7.26.0", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + + + + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-class-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.12.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-classes": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + + + + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-annotate-as-pure": "^7.25.9", + + + + + "@babel/helper-compilation-targets": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/helper-replace-supers": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9", + + + + + "globals": "^11.1.0" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-computed-properties": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + + + + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/template": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-destructuring": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + + + + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-dotall-regex": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + + + + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-duplicate-keys": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + + + + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + + + + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-dynamic-import": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + + + + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-exponentiation-operator": { + + + + "version": "7.26.3", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + + + + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-export-namespace-from": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + + + + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-for-of": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + + + + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-function-name": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + + + + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-compilation-targets": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-json-strings": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + + + + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-literals": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + + + + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + + + + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-member-expression-literals": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + + + + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-modules-amd": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + + + + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-module-transforms": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-modules-commonjs": { + + + + "version": "7.26.3", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + + + + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-module-transforms": "^7.26.0", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-modules-systemjs": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + + + + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-module-transforms": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/helper-validator-identifier": "^7.25.9", + + + + + "@babel/traverse": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-modules-umd": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + + + + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-module-transforms": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + + + + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-new-target": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + + + + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + + + + "version": "7.26.6", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + + + + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.26.5" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-numeric-separator": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + + + + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-object-rest-spread": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + + + + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-compilation-targets": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/plugin-transform-parameters": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-object-super": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + + + + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/helper-replace-supers": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-optional-catch-binding": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + + + + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-optional-chaining": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + + + + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-parameters": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + + + + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-private-methods": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + + + + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-class-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-private-property-in-object": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + + + + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-annotate-as-pure": "^7.25.9", + + + + + "@babel/helper-create-class-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-property-literals": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + + + + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-regenerator": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + + + + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "regenerator-transform": "^0.15.2" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-regexp-modifiers": { + + + + "version": "7.26.0", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + + + + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-reserved-words": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + + + + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-shorthand-properties": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + + + + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-spread": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + + + + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-sticky-regex": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + + + + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-template-literals": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + + + + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-typeof-symbol": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + + + + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-unicode-escapes": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + + + + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-unicode-property-regex": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + + + + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-unicode-regex": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + + + + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + + + + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0" + + + + } + + + }, + + + "node_modules/@babel/preset-env": { + + + + "version": "7.26.0", + + + + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + + + + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/compat-data": "^7.26.0", + + + + + "@babel/helper-compilation-targets": "^7.25.9", + + + + + "@babel/helper-plugin-utils": "^7.25.9", + + + + + "@babel/helper-validator-option": "^7.25.9", + + + + + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + + + + + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + + + + + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + + + + + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + + + + + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + + + + + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + + + + + "@babel/plugin-syntax-import-assertions": "^7.26.0", + + + + + "@babel/plugin-syntax-import-attributes": "^7.26.0", + + + + + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + + + + + "@babel/plugin-transform-arrow-functions": "^7.25.9", + + + + + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + + + + + "@babel/plugin-transform-async-to-generator": "^7.25.9", + + + + + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + + + + + "@babel/plugin-transform-block-scoping": "^7.25.9", + + + + + "@babel/plugin-transform-class-properties": "^7.25.9", + + + + + "@babel/plugin-transform-class-static-block": "^7.26.0", + + + + + "@babel/plugin-transform-classes": "^7.25.9", + + + + + "@babel/plugin-transform-computed-properties": "^7.25.9", + + + + + "@babel/plugin-transform-destructuring": "^7.25.9", + + + + + "@babel/plugin-transform-dotall-regex": "^7.25.9", + + + + + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + + + + + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + + + + + "@babel/plugin-transform-dynamic-import": "^7.25.9", + + + + + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + + + + + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + + + + + "@babel/plugin-transform-for-of": "^7.25.9", + + + + + "@babel/plugin-transform-function-name": "^7.25.9", + + + + + "@babel/plugin-transform-json-strings": "^7.25.9", + + + + + "@babel/plugin-transform-literals": "^7.25.9", + + + + + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + + + + + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + + + + + "@babel/plugin-transform-modules-amd": "^7.25.9", + + + + + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + + + + + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + + + + + "@babel/plugin-transform-modules-umd": "^7.25.9", + + + + + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + + + + + "@babel/plugin-transform-new-target": "^7.25.9", + + + + + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + + + + + "@babel/plugin-transform-numeric-separator": "^7.25.9", + + + + + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + + + + + "@babel/plugin-transform-object-super": "^7.25.9", + + + + + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + + + + + "@babel/plugin-transform-optional-chaining": "^7.25.9", + + + + + "@babel/plugin-transform-parameters": "^7.25.9", + + + + + "@babel/plugin-transform-private-methods": "^7.25.9", + + + + + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + + + + + "@babel/plugin-transform-property-literals": "^7.25.9", + + + + + "@babel/plugin-transform-regenerator": "^7.25.9", + + + + + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + + + + + "@babel/plugin-transform-reserved-words": "^7.25.9", + + + + + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + + + + + "@babel/plugin-transform-spread": "^7.25.9", + + + + + "@babel/plugin-transform-sticky-regex": "^7.25.9", + + + + + "@babel/plugin-transform-template-literals": "^7.25.9", + + + + + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + + + + + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + + + + + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + + + + + "@babel/plugin-transform-unicode-regex": "^7.25.9", + + + + + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + + + + + "@babel/preset-modules": "0.1.6-no-external-plugins", + + + + + "babel-plugin-polyfill-corejs2": "^0.4.10", + + + + + "babel-plugin-polyfill-corejs3": "^0.10.6", + + + + + "babel-plugin-polyfill-regenerator": "^0.6.1", + + + + + "core-js-compat": "^3.38.1", + + + + + "semver": "^6.3.1" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0" + + + + } + + + }, + + + "node_modules/@babel/preset-env/node_modules/semver": { + + + + "version": "6.3.1", + + + + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + + + + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + + + + "dev": true, + + + + "license": "ISC", + + + + "bin": { + + + + + "semver": "bin/semver.js" + + + + } + + + }, + + + "node_modules/@babel/preset-modules": { + + + + "version": "0.1.6-no-external-plugins", + + + + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + + + + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-plugin-utils": "^7.0.0", + + + + + "@babel/types": "^7.4.4", + + + + + "esutils": "^2.0.2" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + + + + } + + + }, + + + "node_modules/@babel/runtime": { + + + + "version": "7.26.0", + + + + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + + + + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "regenerator-runtime": "^0.14.0" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/template": { + + + + "version": "7.25.9", + + + + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + + + + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/code-frame": "^7.25.9", + + + + + "@babel/parser": "^7.25.9", + + + + + "@babel/types": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/traverse": { + + + + "version": "7.26.5", + + + + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", + + + + "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/code-frame": "^7.26.2", + + + + + "@babel/generator": "^7.26.5", + + + + + "@babel/parser": "^7.26.5", + + + + + "@babel/template": "^7.25.9", + + + + + "@babel/types": "^7.26.5", + + + + + "debug": "^4.3.1", + + + + + "globals": "^11.1.0" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@babel/types": { + + + + "version": "7.26.5", + + + + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", + + + + "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-string-parser": "^7.25.9", + + + + + "@babel/helper-validator-identifier": "^7.25.9" + + + + }, + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/@isaacs/cliui": { + + + + "version": "8.0.2", + + + + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + + + + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "string-width": "^5.1.2", + + + + + "string-width-cjs": "npm:string-width@^4.2.0", + + + + + "strip-ansi": "^7.0.1", + + + + + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + + + + + "wrap-ansi": "^8.1.0", + + + + + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=12" + + + + } + + + }, + + + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + + + + "version": "6.1.0", + + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + + + + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=12" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + + + + } + + + }, + + + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + + + + "version": "6.2.1", + + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + + + + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=12" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + + + + } + + + }, + + + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + + + + "version": "9.2.2", + + + + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + + + + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/@isaacs/cliui/node_modules/string-width": { + + + + "version": "5.1.2", + + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + + + + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "eastasianwidth": "^0.2.0", + + + + + "emoji-regex": "^9.2.2", + + + + + "strip-ansi": "^7.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=12" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + + + + "version": "7.1.0", + + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + + + + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ansi-regex": "^6.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=12" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + + + + } + + + }, + + + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + + + + "version": "8.1.0", + + + + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + + + + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ansi-styles": "^6.1.0", + + + + + "string-width": "^5.0.1", + + + + + "strip-ansi": "^7.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=12" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + + + + } + + + }, + + + "node_modules/@jridgewell/gen-mapping": { + + + + "version": "0.3.8", + + + + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + + + + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@jridgewell/set-array": "^1.2.1", + + + + + "@jridgewell/sourcemap-codec": "^1.4.10", + + + + + "@jridgewell/trace-mapping": "^0.3.24" + + + + }, + + + + "engines": { + + + + + "node": ">=6.0.0" + + + + } + + + }, + + + "node_modules/@jridgewell/resolve-uri": { + + + + "version": "3.1.2", + + + + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + + + + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6.0.0" + + + + } + + + }, + + + "node_modules/@jridgewell/set-array": { + + + + "version": "1.2.1", + + + + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + + + + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6.0.0" + + + + } + + + }, + + + "node_modules/@jridgewell/sourcemap-codec": { + + + + "version": "1.5.0", + + + + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + + + + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/@jridgewell/trace-mapping": { + + + + "version": "0.3.25", + + + + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + + + + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@jridgewell/resolve-uri": "^3.1.0", + + + + + "@jridgewell/sourcemap-codec": "^1.4.14" + + + + } + + + }, + + + "node_modules/@mapbox/node-pre-gyp": { + + + + "version": "1.0.11", + + + + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + + + + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + + + + "license": "BSD-3-Clause", + + + + "dependencies": { + + + + + "detect-libc": "^2.0.0", + + + + + "https-proxy-agent": "^5.0.0", + + + + + "make-dir": "^3.1.0", + + + + + "node-fetch": "^2.6.7", + + + + + "nopt": "^5.0.0", + + + + + "npmlog": "^5.0.1", + + + + + "rimraf": "^3.0.2", + + + + + "semver": "^7.3.5", + + + + + "tar": "^6.1.11" + + + + }, + + + + "bin": { + + + + + "node-pre-gyp": "bin/node-pre-gyp" + + + + } + + + }, + + + "node_modules/@mongodb-js/saslprep": { + + + + "version": "1.1.9", + + + + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", + + + + "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "sparse-bitfield": "^3.0.3" + + + + } + + + }, + + + "node_modules/@pkgjs/parseargs": { + + + + "version": "0.11.0", + + + + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + + + + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "optional": true, + + + + "engines": { + + + + + "node": ">=14" + + + + } + + + }, + + + "node_modules/@types/body-parser": { + + + + "version": "1.19.5", + + + + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + + + + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@types/connect": "*", + + + + + "@types/node": "*" + + + + } + + + }, + + + "node_modules/@types/chai": { + + + + "version": "5.0.1", + + + + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.0.1.tgz", + + + + "integrity": "sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@types/deep-eql": "*" + + + + } + + + }, + + + "node_modules/@types/connect": { + + + + "version": "3.4.38", + + + + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + + + + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@types/node": "*" + + + + } + + + }, + + + "node_modules/@types/cookiejar": { + + + + "version": "2.1.5", + + + + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + + + + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/@types/deep-eql": { + + + + "version": "4.0.2", + + + + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + + + + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/@types/express": { + + + + "version": "5.0.0", + + + + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", + + + + "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@types/body-parser": "*", + + + + + "@types/express-serve-static-core": "^5.0.0", + + + + + "@types/qs": "*", + + + + + "@types/serve-static": "*" + + + + } + + + }, + + + "node_modules/@types/express-serve-static-core": { + + + + "version": "5.0.5", + + + + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.5.tgz", + + + + "integrity": "sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@types/node": "*", + + + + + "@types/qs": "*", + + + + + "@types/range-parser": "*", + + + + + "@types/send": "*" + + + + } + + + }, + + + "node_modules/@types/http-errors": { + + + + "version": "2.0.4", + + + + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + + + + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/@types/methods": { + + + + "version": "1.1.4", + + + + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + + + + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/@types/mime": { + + + + "version": "1.3.5", + + + + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + + + + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/@types/mocha": { + + + + "version": "10.0.10", + + + + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + + + + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/@types/node": { + + + + "version": "22.10.7", + + + + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + + + + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "undici-types": "~6.20.0" + + + + } + + + }, + + + "node_modules/@types/qs": { + + + + "version": "6.9.18", + + + + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + + + + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/@types/range-parser": { + + + + "version": "1.2.7", + + + + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + + + + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/@types/send": { + + + + "version": "0.17.4", + + + + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + + + + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@types/mime": "^1", + + + + + "@types/node": "*" + + + + } + + + }, + + + "node_modules/@types/serve-static": { + + + + "version": "1.15.7", + + + + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + + + + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@types/http-errors": "*", + + + + + "@types/node": "*", + + + + + "@types/send": "*" + + + + } + + + }, + + + "node_modules/@types/superagent": { + + + + "version": "8.1.9", + + + + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", + + + + "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@types/cookiejar": "^2.1.5", + + + + + "@types/methods": "^1.1.4", + + + + + "@types/node": "*", + + + + + "form-data": "^4.0.0" + + + + } + + + }, + + + "node_modules/@types/supertest": { + + + + "version": "6.0.2", + + + + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.2.tgz", + + + + "integrity": "sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@types/methods": "^1.1.4", + + + + + "@types/superagent": "^8.1.0" + + + + } + + + }, + + + "node_modules/@types/webidl-conversions": { + + + + "version": "7.0.3", + + + + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + + + + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + + + + "license": "MIT" + + + }, + + + "node_modules/@types/whatwg-url": { + + + + "version": "11.0.5", + + + + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + + + + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@types/webidl-conversions": "*" + + + + } + + + }, + + + "node_modules/abbrev": { + + + + "version": "1.1.1", + + + + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + + + + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + + + + "license": "ISC" + + + }, + + + "node_modules/accepts": { + + + + "version": "1.3.8", + + + + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + + + + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "mime-types": "~2.1.34", + + + + + "negotiator": "0.6.3" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/agent-base": { + + + + "version": "6.0.2", + + + + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + + + + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "debug": "4" + + + + }, + + + + "engines": { + + + + + "node": ">= 6.0.0" + + + + } + + + }, + + + "node_modules/ansi-colors": { + + + + "version": "4.1.3", + + + + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + + + + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6" + + + + } + + + }, + + + "node_modules/ansi-regex": { + + + + "version": "5.0.1", + + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/ansi-styles": { + + + + "version": "4.3.0", + + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + + + + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "color-convert": "^2.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + + + + } + + + }, + + + "node_modules/anymatch": { + + + + "version": "3.1.3", + + + + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + + + + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "normalize-path": "^3.0.0", + + + + + "picomatch": "^2.0.4" + + + + }, + + + + "engines": { + + + + + "node": ">= 8" + + + + } + + + }, + + + "node_modules/aproba": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + + + + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + + + + "license": "ISC" + + + }, + + + "node_modules/are-we-there-yet": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + + + + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + + + + "deprecated": "This package is no longer supported.", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "delegates": "^1.0.0", + + + + + "readable-stream": "^3.6.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/argparse": { + + + + "version": "2.0.1", + + + + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + + + + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + + + + "dev": true, + + + + "license": "Python-2.0" + + + }, + + + "node_modules/array-flatten": { + + + + "version": "1.1.1", + + + + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + + + + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + + + + "license": "MIT" + + + }, + + + "node_modules/asap": { + + + + "version": "2.0.6", + + + + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + + + + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/assertion-error": { + + + + "version": "2.0.1", + + + + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + + + + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=12" + + + + } + + + }, + + + "node_modules/asynckit": { + + + + "version": "0.4.0", + + + + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + + + + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/babel-plugin-polyfill-corejs2": { + + + + "version": "0.4.12", + + + + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + + + + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/compat-data": "^7.22.6", + + + + + "@babel/helper-define-polyfill-provider": "^0.6.3", + + + + + "semver": "^6.3.1" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + + + + } + + + }, + + + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + + + + "version": "6.3.1", + + + + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + + + + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + + + + "dev": true, + + + + "license": "ISC", + + + + "bin": { + + + + + "semver": "bin/semver.js" + + + + } + + + }, + + + "node_modules/babel-plugin-polyfill-corejs3": { + + + + "version": "0.10.6", + + + + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + + + + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-define-polyfill-provider": "^0.6.2", + + + + + "core-js-compat": "^3.38.0" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + + + + } + + + }, + + + "node_modules/babel-plugin-polyfill-regenerator": { + + + + "version": "0.6.3", + + + + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + + + + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/helper-define-polyfill-provider": "^0.6.3" + + + + }, + + + + "peerDependencies": { + + + + + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + + + + } + + + }, + + + "node_modules/balanced-match": { + + + + "version": "1.0.2", + + + + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + + + + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + + + + "license": "MIT" + + + }, + + + "node_modules/bcrypt": { + + + + "version": "5.1.1", + + + + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + + + + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + + + + "hasInstallScript": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@mapbox/node-pre-gyp": "^1.0.11", + + + + + "node-addon-api": "^5.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 10.0.0" + + + + } + + + }, + + + "node_modules/binary-extensions": { + + + + "version": "2.3.0", + + + + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + + + + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/body-parser": { + + + + "version": "1.20.3", + + + + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + + + + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "bytes": "3.1.2", + + + + + "content-type": "~1.0.5", + + + + + "debug": "2.6.9", + + + + + "depd": "2.0.0", + + + + + "destroy": "1.2.0", + + + + + "http-errors": "2.0.0", + + + + + "iconv-lite": "0.4.24", + + + + + "on-finished": "2.4.1", + + + + + "qs": "6.13.0", + + + + + "raw-body": "2.5.2", + + + + + "type-is": "~1.6.18", + + + + + "unpipe": "1.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.8", + + + + + "npm": "1.2.8000 || >= 1.4.16" + + + + } + + + }, + + + "node_modules/body-parser/node_modules/debug": { + + + + "version": "2.6.9", + + + + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + + + + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ms": "2.0.0" + + + + } + + + }, + + + "node_modules/body-parser/node_modules/ms": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + + + + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + + + + "license": "MIT" + + + }, + + + "node_modules/brace-expansion": { + + + + "version": "1.1.11", + + + + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + + + + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "balanced-match": "^1.0.0", + + + + + "concat-map": "0.0.1" + + + + } + + + }, + + + "node_modules/braces": { + + + + "version": "3.0.3", + + + + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + + + + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "fill-range": "^7.1.1" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/browser-stdout": { + + + + "version": "1.3.1", + + + + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + + + + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + + + + "dev": true, + + + + "license": "ISC" + + + }, + + + "node_modules/browserslist": { + + + + "version": "4.24.4", + + + + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + + + + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + + + + "dev": true, + + + + "funding": [ + + + + + { + + + + + + "type": "opencollective", + + + + + + "url": "https://opencollective.com/browserslist" + + + + + }, + + + + + { + + + + + + "type": "tidelift", + + + + + + "url": "https://tidelift.com/funding/github/npm/browserslist" + + + + + }, + + + + + { + + + + + + "type": "github", + + + + + + "url": "https://github.com/sponsors/ai" + + + + + } + + + + ], + + + + "license": "MIT", + + + + "dependencies": { + + + + + "caniuse-lite": "^1.0.30001688", + + + + + "electron-to-chromium": "^1.5.73", + + + + + "node-releases": "^2.0.19", + + + + + "update-browserslist-db": "^1.1.1" + + + + }, + + + + "bin": { + + + + + "browserslist": "cli.js" + + + + }, + + + + "engines": { + + + + + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + + + + } + + + }, + + + "node_modules/bson": { + + + + "version": "6.10.1", + + + + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", + + + + "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", + + + + "license": "Apache-2.0", + + + + "engines": { + + + + + "node": ">=16.20.1" + + + + } + + + }, + + + "node_modules/bytes": { + + + + "version": "3.1.2", + + + + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + + + + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/call-bind-apply-helpers": { + + + + "version": "1.0.1", + + + + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + + + + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "es-errors": "^1.3.0", + + + + + "function-bind": "^1.1.2" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + } + + + }, + + + "node_modules/call-bound": { + + + + "version": "1.0.3", + + + + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + + + + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "call-bind-apply-helpers": "^1.0.1", + + + + + "get-intrinsic": "^1.2.6" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/camelcase": { + + + + "version": "6.3.0", + + + + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + + + + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/caniuse-lite": { + + + + "version": "1.0.30001695", + + + + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz", + + + + "integrity": "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==", + + + + "dev": true, + + + + "funding": [ + + + + + { + + + + + + "type": "opencollective", + + + + + + "url": "https://opencollective.com/browserslist" + + + + + }, + + + + + { + + + + + + "type": "tidelift", + + + + + + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + + + + + }, + + + + + { + + + + + + "type": "github", + + + + + + "url": "https://github.com/sponsors/ai" + + + + + } + + + + ], + + + + "license": "CC-BY-4.0" + + + }, + + + "node_modules/chai": { + + + + "version": "5.1.2", + + + + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", + + + + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "assertion-error": "^2.0.1", + + + + + "check-error": "^2.1.1", + + + + + "deep-eql": "^5.0.1", + + + + + "loupe": "^3.1.0", + + + + + "pathval": "^2.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=12" + + + + } + + + }, + + + "node_modules/chalk": { + + + + "version": "4.1.2", + + + + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + + + + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ansi-styles": "^4.1.0", + + + + + "supports-color": "^7.1.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/chalk/chalk?sponsor=1" + + + + } + + + }, + + + "node_modules/chalk/node_modules/supports-color": { + + + + "version": "7.2.0", + + + + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + + + + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "has-flag": "^4.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/check-error": { + + + + "version": "2.1.1", + + + + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + + + + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 16" + + + + } + + + }, + + + "node_modules/chokidar": { + + + + "version": "3.6.0", + + + + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + + + + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "anymatch": "~3.1.2", + + + + + "braces": "~3.0.2", + + + + + "glob-parent": "~5.1.2", + + + + + "is-binary-path": "~2.1.0", + + + + + "is-glob": "~4.0.1", + + + + + "normalize-path": "~3.0.0", + + + + + "readdirp": "~3.6.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 8.10.0" + + + + }, + + + + "funding": { + + + + + "url": "https://paulmillr.com/funding/" + + + + }, + + + + "optionalDependencies": { + + + + + "fsevents": "~2.3.2" + + + + } + + + }, + + + "node_modules/chownr": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + + + + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + + + + "license": "ISC", + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/cliui": { + + + + "version": "7.0.4", + + + + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + + + + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "string-width": "^4.2.0", + + + + + "strip-ansi": "^6.0.0", + + + + + "wrap-ansi": "^7.0.0" + + + + } + + + }, + + + "node_modules/color-convert": { + + + + "version": "2.0.1", + + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + + + + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "color-name": "~1.1.4" + + + + }, + + + + "engines": { + + + + + "node": ">=7.0.0" + + + + } + + + }, + + + "node_modules/color-name": { + + + + "version": "1.1.4", + + + + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + + + + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/color-support": { + + + + "version": "1.1.3", + + + + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + + + + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + + + + "license": "ISC", + + + + "bin": { + + + + + "color-support": "bin.js" + + + + } + + + }, + + + "node_modules/combined-stream": { + + + + "version": "1.0.8", + + + + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + + + + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "delayed-stream": "~1.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/component-emitter": { + + + + "version": "1.3.1", + + + + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + + + + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/concat-map": { + + + + "version": "0.0.1", + + + + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + + + + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + + + + "license": "MIT" + + + }, + + + "node_modules/console-control-strings": { + + + + "version": "1.1.0", + + + + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + + + + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + + + + "license": "ISC" + + + }, + + + "node_modules/content-disposition": { + + + + "version": "0.5.4", + + + + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + + + + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "safe-buffer": "5.2.1" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/content-type": { + + + + "version": "1.0.5", + + + + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + + + + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/convert-source-map": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + + + + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/cookie": { + + + + "version": "0.7.1", + + + + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + + + + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/cookie-signature": { + + + + "version": "1.0.6", + + + + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + + + + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + + + + "license": "MIT" + + + }, + + + "node_modules/cookiejar": { + + + + "version": "2.1.4", + + + + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + + + + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/core-js-compat": { + + + + "version": "3.40.0", + + + + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + + + + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "browserslist": "^4.24.3" + + + + }, + + + + "funding": { + + + + + "type": "opencollective", + + + + + "url": "https://opencollective.com/core-js" + + + + } + + + }, + + + "node_modules/cors": { + + + + "version": "2.8.5", + + + + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + + + + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "object-assign": "^4", + + + + + "vary": "^1" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.10" + + + + } + + + }, + + + "node_modules/cross-spawn": { + + + + "version": "7.0.6", + + + + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + + + + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "path-key": "^3.1.0", + + + + + "shebang-command": "^2.0.0", + + + + + "which": "^2.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">= 8" + + + + } + + + }, + + + "node_modules/debug": { + + + + "version": "4.4.0", + + + + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + + + + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ms": "^2.1.3" + + + + }, + + + + "engines": { + + + + + "node": ">=6.0" + + + + }, + + + + "peerDependenciesMeta": { + + + + + "supports-color": { + + + + + + "optional": true + + + + + } + + + + } + + + }, + + + "node_modules/decamelize": { + + + + "version": "4.0.0", + + + + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + + + + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/deep-eql": { + + + + "version": "5.0.2", + + + + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + + + + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6" + + + + } + + + }, + + + "node_modules/delayed-stream": { + + + + "version": "1.0.0", + + + + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + + + + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=0.4.0" + + + + } + + + }, + + + "node_modules/delegates": { + + + + "version": "1.0.0", + + + + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + + + + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + + + + "license": "MIT" + + + }, + + + "node_modules/depd": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + + + + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/destroy": { + + + + "version": "1.2.0", + + + + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + + + + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.8", + + + + + "npm": "1.2.8000 || >= 1.4.16" + + + + } + + + }, + + + "node_modules/detect-libc": { + + + + "version": "2.0.3", + + + + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + + + + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + + + + "license": "Apache-2.0", + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/dezalgo": { + + + + "version": "1.0.4", + + + + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + + + + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "asap": "^2.0.0", + + + + + "wrappy": "1" + + + + } + + + }, + + + "node_modules/diff": { + + + + "version": "5.2.0", + + + + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + + + + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + + + + "dev": true, + + + + "license": "BSD-3-Clause", + + + + "engines": { + + + + + "node": ">=0.3.1" + + + + } + + + }, + + + "node_modules/dunder-proto": { + + + + "version": "1.0.1", + + + + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + + + + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "call-bind-apply-helpers": "^1.0.1", + + + + + "es-errors": "^1.3.0", + + + + + "gopd": "^1.2.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + } + + + }, + + + "node_modules/eastasianwidth": { + + + + "version": "0.2.0", + + + + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + + + + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/ee-first": { + + + + "version": "1.1.1", + + + + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + + + + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + + + + "license": "MIT" + + + }, + + + "node_modules/electron-to-chromium": { + + + + "version": "1.5.83", + + + + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz", + + + + "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==", + + + + "dev": true, + + + + "license": "ISC" + + + }, + + + "node_modules/emoji-regex": { + + + + "version": "8.0.0", + + + + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + + + + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + + + + "license": "MIT" + + + }, + + + "node_modules/encodeurl": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + + + + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/es-define-property": { + + + + "version": "1.0.1", + + + + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + + + + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.4" + + + + } + + + }, + + + "node_modules/es-errors": { + + + + "version": "1.3.0", + + + + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + + + + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.4" + + + + } + + + }, + + + "node_modules/es-object-atoms": { + + + + "version": "1.0.0", + + + + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + + + + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "es-errors": "^1.3.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + } + + + }, + + + "node_modules/escalade": { + + + + "version": "3.2.0", + + + + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + + + + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6" + + + + } + + + }, + + + "node_modules/escape-html": { + + + + "version": "1.0.3", + + + + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + + + + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + + + + "license": "MIT" + + + }, + + + "node_modules/escape-string-regexp": { + + + + "version": "4.0.0", + + + + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + + + + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/esutils": { + + + + "version": "2.0.3", + + + + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + + + + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + + + + "dev": true, + + + + "license": "BSD-2-Clause", + + + + "engines": { + + + + + "node": ">=0.10.0" + + + + } + + + }, + + + "node_modules/etag": { + + + + "version": "1.8.1", + + + + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + + + + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/express": { + + + + "version": "4.21.2", + + + + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + + + + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "accepts": "~1.3.8", + + + + + "array-flatten": "1.1.1", + + + + + "body-parser": "1.20.3", + + + + + "content-disposition": "0.5.4", + + + + + "content-type": "~1.0.4", + + + + + "cookie": "0.7.1", + + + + + "cookie-signature": "1.0.6", + + + + + "debug": "2.6.9", + + + + + "depd": "2.0.0", + + + + + "encodeurl": "~2.0.0", + + + + + "escape-html": "~1.0.3", + + + + + "etag": "~1.8.1", + + + + + "finalhandler": "1.3.1", + + + + + "fresh": "0.5.2", + + + + + "http-errors": "2.0.0", + + + + + "merge-descriptors": "1.0.3", + + + + + "methods": "~1.1.2", + + + + + "on-finished": "2.4.1", + + + + + "parseurl": "~1.3.3", + + + + + "path-to-regexp": "0.1.12", + + + + + "proxy-addr": "~2.0.7", + + + + + "qs": "6.13.0", + + + + + "range-parser": "~1.2.1", + + + + + "safe-buffer": "5.2.1", + + + + + "send": "0.19.0", + + + + + "serve-static": "1.16.2", + + + + + "setprototypeof": "1.2.0", + + + + + "statuses": "2.0.1", + + + + + "type-is": "~1.6.18", + + + + + "utils-merge": "1.0.1", + + + + + "vary": "~1.1.2" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.10.0" + + + + }, + + + + "funding": { + + + + + "type": "opencollective", + + + + + "url": "https://opencollective.com/express" + + + + } + + + }, + + + "node_modules/express/node_modules/debug": { + + + + "version": "2.6.9", + + + + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + + + + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ms": "2.0.0" + + + + } + + + }, + + + "node_modules/express/node_modules/ms": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + + + + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + + + + "license": "MIT" + + + }, + + + "node_modules/fast-safe-stringify": { + + + + "version": "2.1.1", + + + + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + + + + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/fill-range": { + + + + "version": "7.1.1", + + + + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + + + + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "to-regex-range": "^5.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/finalhandler": { + + + + "version": "1.3.1", + + + + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + + + + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "debug": "2.6.9", + + + + + "encodeurl": "~2.0.0", + + + + + "escape-html": "~1.0.3", + + + + + "on-finished": "2.4.1", + + + + + "parseurl": "~1.3.3", + + + + + "statuses": "2.0.1", + + + + + "unpipe": "~1.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/finalhandler/node_modules/debug": { + + + + "version": "2.6.9", + + + + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + + + + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ms": "2.0.0" + + + + } + + + }, + + + "node_modules/finalhandler/node_modules/ms": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + + + + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + + + + "license": "MIT" + + + }, + + + "node_modules/find-up": { + + + + "version": "5.0.0", + + + + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + + + + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "locate-path": "^6.0.0", + + + + + "path-exists": "^4.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/flat": { + + + + "version": "5.0.2", + + + + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + + + + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + + + + "dev": true, + + + + "license": "BSD-3-Clause", + + + + "bin": { + + + + + "flat": "cli.js" + + + + } + + + }, + + + "node_modules/foreground-child": { + + + + "version": "3.3.0", + + + + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + + + + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "cross-spawn": "^7.0.0", + + + + + "signal-exit": "^4.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=14" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/isaacs" + + + + } + + + }, + + + "node_modules/foreground-child/node_modules/signal-exit": { + + + + "version": "4.1.0", + + + + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + + + + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + + + + "dev": true, + + + + "license": "ISC", + + + + "engines": { + + + + + "node": ">=14" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/isaacs" + + + + } + + + }, + + + "node_modules/form-data": { + + + + "version": "4.0.1", + + + + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + + + + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "asynckit": "^0.4.0", + + + + + "combined-stream": "^1.0.8", + + + + + "mime-types": "^2.1.12" + + + + }, + + + + "engines": { + + + + + "node": ">= 6" + + + + } + + + }, + + + "node_modules/formidable": { + + + + "version": "3.5.2", + + + + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz", + + + + "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "dezalgo": "^1.0.4", + + + + + "hexoid": "^2.0.0", + + + + + "once": "^1.4.0" + + + + }, + + + + "funding": { + + + + + "url": "https://ko-fi.com/tunnckoCore/commissions" + + + + } + + + }, + + + "node_modules/forwarded": { + + + + "version": "0.2.0", + + + + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + + + + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/fresh": { + + + + "version": "0.5.2", + + + + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + + + + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/fs-minipass": { + + + + "version": "2.1.0", + + + + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + + + + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "minipass": "^3.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 8" + + + + } + + + }, + + + "node_modules/fs-minipass/node_modules/minipass": { + + + + "version": "3.3.6", + + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "yallist": "^4.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/fs.realpath": { + + + + "version": "1.0.0", + + + + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + + + + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + + + + "license": "ISC" + + + }, + + + "node_modules/fsevents": { + + + + "version": "2.3.3", + + + + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + + + + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + + + + "dev": true, + + + + "hasInstallScript": true, + + + + "license": "MIT", + + + + "optional": true, + + + + "os": [ + + + + + "darwin" + + + + ], + + + + "engines": { + + + + + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + + + + } + + + }, + + + "node_modules/function-bind": { + + + + "version": "1.1.2", + + + + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + + + + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + + + + "license": "MIT", + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/gauge": { + + + + "version": "3.0.2", + + + + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + + + + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + + + + "deprecated": "This package is no longer supported.", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "aproba": "^1.0.3 || ^2.0.0", + + + + + "color-support": "^1.1.2", + + + + + "console-control-strings": "^1.0.0", + + + + + "has-unicode": "^2.0.1", + + + + + "object-assign": "^4.1.1", + + + + + "signal-exit": "^3.0.0", + + + + + "string-width": "^4.2.3", + + + + + "strip-ansi": "^6.0.1", + + + + + "wide-align": "^1.1.2" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/gensync": { + + + + "version": "1.0.0-beta.2", + + + + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + + + + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6.9.0" + + + + } + + + }, + + + "node_modules/get-caller-file": { + + + + "version": "2.0.5", + + + + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + + + + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + + + + "dev": true, + + + + "license": "ISC", + + + + "engines": { + + + + + "node": "6.* || 8.* || >= 10.*" + + + + } + + + }, + + + "node_modules/get-intrinsic": { + + + + "version": "1.2.7", + + + + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + + + + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "call-bind-apply-helpers": "^1.0.1", + + + + + "es-define-property": "^1.0.1", + + + + + "es-errors": "^1.3.0", + + + + + "es-object-atoms": "^1.0.0", + + + + + "function-bind": "^1.1.2", + + + + + "get-proto": "^1.0.0", + + + + + "gopd": "^1.2.0", + + + + + "has-symbols": "^1.1.0", + + + + + "hasown": "^2.0.2", + + + + + "math-intrinsics": "^1.1.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/get-proto": { + + + + "version": "1.0.1", + + + + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + + + + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "dunder-proto": "^1.0.1", + + + + + "es-object-atoms": "^1.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + } + + + }, + + + "node_modules/glob": { + + + + "version": "7.2.3", + + + + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + + + + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + + + + "deprecated": "Glob versions prior to v9 are no longer supported", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "fs.realpath": "^1.0.0", + + + + + "inflight": "^1.0.4", + + + + + "inherits": "2", + + + + + "minimatch": "^3.1.1", + + + + + "once": "^1.3.0", + + + + + "path-is-absolute": "^1.0.0" + + + + }, + + + + "engines": { + + + + + "node": "*" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/isaacs" + + + + } + + + }, + + + "node_modules/glob-parent": { + + + + "version": "5.1.2", + + + + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + + + + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "is-glob": "^4.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">= 6" + + + + } + + + }, + + + "node_modules/globals": { + + + + "version": "11.12.0", + + + + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + + + + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=4" + + + + } + + + }, + + + "node_modules/gopd": { + + + + "version": "1.2.0", + + + + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + + + + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/has-flag": { + + + + "version": "4.0.0", + + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + + + + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/has-symbols": { + + + + "version": "1.1.0", + + + + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + + + + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/has-unicode": { + + + + "version": "2.0.1", + + + + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + + + + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + + + + "license": "ISC" + + + }, + + + "node_modules/hasown": { + + + + "version": "2.0.2", + + + + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + + + + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "function-bind": "^1.1.2" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + } + + + }, + + + "node_modules/he": { + + + + "version": "1.2.0", + + + + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + + + + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "bin": { + + + + + "he": "bin/he" + + + + } + + + }, + + + "node_modules/hexoid": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz", + + + + "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/http-errors": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + + + + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "depd": "2.0.0", + + + + + "inherits": "2.0.4", + + + + + "setprototypeof": "1.2.0", + + + + + "statuses": "2.0.1", + + + + + "toidentifier": "1.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/https-proxy-agent": { + + + + "version": "5.0.1", + + + + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + + + + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "agent-base": "6", + + + + + "debug": "4" + + + + }, + + + + "engines": { + + + + + "node": ">= 6" + + + + } + + + }, + + + "node_modules/iconv-lite": { + + + + "version": "0.4.24", + + + + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + + + + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "safer-buffer": ">= 2.1.2 < 3" + + + + }, + + + + "engines": { + + + + + "node": ">=0.10.0" + + + + } + + + }, + + + "node_modules/inflight": { + + + + "version": "1.0.6", + + + + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + + + + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + + + + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "once": "^1.3.0", + + + + + "wrappy": "1" + + + + } + + + }, + + + "node_modules/inherits": { + + + + "version": "2.0.4", + + + + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + + + + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + + + + "license": "ISC" + + + }, + + + "node_modules/ipaddr.js": { + + + + "version": "1.9.1", + + + + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + + + + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.10" + + + + } + + + }, + + + "node_modules/is-binary-path": { + + + + "version": "2.1.0", + + + + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + + + + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "binary-extensions": "^2.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/is-core-module": { + + + + "version": "2.16.1", + + + + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + + + + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "hasown": "^2.0.2" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/is-extglob": { + + + + "version": "2.1.1", + + + + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + + + + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=0.10.0" + + + + } + + + }, + + + "node_modules/is-fullwidth-code-point": { + + + + "version": "3.0.0", + + + + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + + + + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/is-glob": { + + + + "version": "4.0.3", + + + + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + + + + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "is-extglob": "^2.1.1" + + + + }, + + + + "engines": { + + + + + "node": ">=0.10.0" + + + + } + + + }, + + + "node_modules/is-number": { + + + + "version": "7.0.0", + + + + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + + + + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=0.12.0" + + + + } + + + }, + + + "node_modules/is-plain-obj": { + + + + "version": "2.1.0", + + + + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + + + + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/is-unicode-supported": { + + + + "version": "0.1.0", + + + + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + + + + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/isexe": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + + + + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + + + + "dev": true, + + + + "license": "ISC" + + + }, + + + "node_modules/jackspeak": { + + + + "version": "3.4.3", + + + + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + + + + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + + + + "dev": true, + + + + "license": "BlueOak-1.0.0", + + + + "dependencies": { + + + + + "@isaacs/cliui": "^8.0.2" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/isaacs" + + + + }, + + + + "optionalDependencies": { + + + + + "@pkgjs/parseargs": "^0.11.0" + + + + } + + + }, + + + "node_modules/js-tokens": { + + + + "version": "4.0.0", + + + + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + + + + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/js-yaml": { + + + + "version": "4.1.0", + + + + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + + + + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "argparse": "^2.0.1" + + + + }, + + + + "bin": { + + + + + "js-yaml": "bin/js-yaml.js" + + + + } + + + }, + + + "node_modules/jsesc": { + + + + "version": "3.1.0", + + + + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + + + + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "bin": { + + + + + "jsesc": "bin/jsesc" + + + + }, + + + + "engines": { + + + + + "node": ">=6" + + + + } + + + }, + + + "node_modules/json5": { + + + + "version": "2.2.3", + + + + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + + + + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "bin": { + + + + + "json5": "lib/cli.js" + + + + }, + + + + "engines": { + + + + + "node": ">=6" + + + + } + + + }, + + + "node_modules/kareem": { + + + + "version": "2.6.3", + + + + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + + + + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", + + + + "license": "Apache-2.0", + + + + "engines": { + + + + + "node": ">=12.0.0" + + + + } + + + }, + + + "node_modules/locate-path": { + + + + "version": "6.0.0", + + + + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + + + + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "p-locate": "^5.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/lodash.debounce": { + + + + "version": "4.0.8", + + + + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + + + + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/log-symbols": { + + + + "version": "4.1.0", + + + + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + + + + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "chalk": "^4.1.0", + + + + + "is-unicode-supported": "^0.1.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/loupe": { + + + + "version": "3.1.2", + + + + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", + + + + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/lru-cache": { + + + + "version": "5.1.1", + + + + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + + + + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "yallist": "^3.0.2" + + + + } + + + }, + + + "node_modules/lru-cache/node_modules/yallist": { + + + + "version": "3.1.1", + + + + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + + + + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + + + + "dev": true, + + + + "license": "ISC" + + + }, + + + "node_modules/make-dir": { + + + + "version": "3.1.0", + + + + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + + + + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "semver": "^6.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/make-dir/node_modules/semver": { + + + + "version": "6.3.1", + + + + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + + + + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + + + + "license": "ISC", + + + + "bin": { + + + + + "semver": "bin/semver.js" + + + + } + + + }, + + + "node_modules/math-intrinsics": { + + + + "version": "1.1.0", + + + + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + + + + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.4" + + + + } + + + }, + + + "node_modules/media-typer": { + + + + "version": "0.3.0", + + + + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + + + + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/memory-pager": { + + + + "version": "1.5.0", + + + + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + + + + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + + + + "license": "MIT" + + + }, + + + "node_modules/merge-descriptors": { + + + + "version": "1.0.3", + + + + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + + + + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + + + + "license": "MIT", + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/methods": { + + + + "version": "1.1.2", + + + + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + + + + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/mime": { + + + + "version": "1.6.0", + + + + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + + + + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + + + + "license": "MIT", + + + + "bin": { + + + + + "mime": "cli.js" + + + + }, + + + + "engines": { + + + + + "node": ">=4" + + + + } + + + }, + + + "node_modules/mime-db": { + + + + "version": "1.52.0", + + + + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + + + + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/mime-types": { + + + + "version": "2.1.35", + + + + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + + + + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "mime-db": "1.52.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/minimatch": { + + + + "version": "3.1.2", + + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + + + + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "brace-expansion": "^1.1.7" + + + + }, + + + + "engines": { + + + + + "node": "*" + + + + } + + + }, + + + "node_modules/minipass": { + + + + "version": "5.0.0", + + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + + + + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + + + + "license": "ISC", + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/minizlib": { + + + + "version": "2.1.2", + + + + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + + + + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "minipass": "^3.0.0", + + + + + "yallist": "^4.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 8" + + + + } + + + }, + + + "node_modules/minizlib/node_modules/minipass": { + + + + "version": "3.3.6", + + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "yallist": "^4.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/mkdirp": { + + + + "version": "1.0.4", + + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + + + + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + + + + "license": "MIT", + + + + "bin": { + + + + + "mkdirp": "bin/cmd.js" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/mocha": { + + + + "version": "11.0.1", + + + + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.0.1.tgz", + + + + "integrity": "sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ansi-colors": "^4.1.3", + + + + + "browser-stdout": "^1.3.1", + + + + + "chokidar": "^3.5.3", + + + + + "debug": "^4.3.5", + + + + + "diff": "^5.2.0", + + + + + "escape-string-regexp": "^4.0.0", + + + + + "find-up": "^5.0.0", + + + + + "glob": "^10.4.5", + + + + + "he": "^1.2.0", + + + + + "js-yaml": "^4.1.0", + + + + + "log-symbols": "^4.1.0", + + + + + "minimatch": "^5.1.6", + + + + + "ms": "^2.1.3", + + + + + "serialize-javascript": "^6.0.2", + + + + + "strip-json-comments": "^3.1.1", + + + + + "supports-color": "^8.1.1", + + + + + "workerpool": "^6.5.1", + + + + + "yargs": "^16.2.0", + + + + + "yargs-parser": "^20.2.9", + + + + + "yargs-unparser": "^2.0.0" + + + + }, + + + + "bin": { + + + + + "_mocha": "bin/_mocha", + + + + + "mocha": "bin/mocha.js" + + + + }, + + + + "engines": { + + + + + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + + + + } + + + }, + + + "node_modules/mocha/node_modules/brace-expansion": { + + + + "version": "2.0.1", + + + + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + + + + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "balanced-match": "^1.0.0" + + + + } + + + }, + + + "node_modules/mocha/node_modules/glob": { + + + + "version": "10.4.5", + + + + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + + + + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "foreground-child": "^3.1.0", + + + + + "jackspeak": "^3.1.2", + + + + + "minimatch": "^9.0.4", + + + + + "minipass": "^7.1.2", + + + + + "package-json-from-dist": "^1.0.0", + + + + + "path-scurry": "^1.11.1" + + + + }, + + + + "bin": { + + + + + "glob": "dist/esm/bin.mjs" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/isaacs" + + + + } + + + }, + + + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + + + + "version": "9.0.5", + + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + + + + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "brace-expansion": "^2.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=16 || 14 >=14.17" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/isaacs" + + + + } + + + }, + + + "node_modules/mocha/node_modules/minimatch": { + + + + "version": "5.1.6", + + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + + + + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "brace-expansion": "^2.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/mocha/node_modules/minipass": { + + + + "version": "7.1.2", + + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + + + + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + + + + "dev": true, + + + + "license": "ISC", + + + + "engines": { + + + + + "node": ">=16 || 14 >=14.17" + + + + } + + + }, + + + "node_modules/mongodb": { + + + + "version": "6.12.0", + + + + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz", + + + + "integrity": "sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==", + + + + "license": "Apache-2.0", + + + + "dependencies": { + + + + + "@mongodb-js/saslprep": "^1.1.9", + + + + + "bson": "^6.10.1", + + + + + "mongodb-connection-string-url": "^3.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=16.20.1" + + + + }, + + + + "peerDependencies": { + + + + + "@aws-sdk/credential-providers": "^3.188.0", + + + + + "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", + + + + + "gcp-metadata": "^5.2.0", + + + + + "kerberos": "^2.0.1", + + + + + "mongodb-client-encryption": ">=6.0.0 <7", + + + + + "snappy": "^7.2.2", + + + + + "socks": "^2.7.1" + + + + }, + + + + "peerDependenciesMeta": { + + + + + "@aws-sdk/credential-providers": { + + + + + + "optional": true + + + + + }, + + + + + "@mongodb-js/zstd": { + + + + + + "optional": true + + + + + }, + + + + + "gcp-metadata": { + + + + + + "optional": true + + + + + }, + + + + + "kerberos": { + + + + + + "optional": true + + + + + }, + + + + + "mongodb-client-encryption": { + + + + + + "optional": true + + + + + }, + + + + + "snappy": { + + + + + + "optional": true + + + + + }, + + + + + "socks": { + + + + + + "optional": true + + + + + } + + + + } + + + }, + + + "node_modules/mongodb-connection-string-url": { + + + + "version": "3.0.1", + + + + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + + + + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + + + + "license": "Apache-2.0", + + + + "dependencies": { + + + + + "@types/whatwg-url": "^11.0.2", + + + + + "whatwg-url": "^13.0.0" + + + + } + + + }, + + + "node_modules/mongoose": { + + + + "version": "8.9.5", + + + + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.9.5.tgz", + + + + "integrity": "sha512-SPhOrgBm0nKV3b+IIHGqpUTOmgVL5Z3OO9AwkFEmvOZznXTvplbomstCnPOGAyungtRXE5pJTgKpKcZTdjeESg==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "bson": "^6.10.1", + + + + + "kareem": "2.6.3", + + + + + "mongodb": "~6.12.0", + + + + + "mpath": "0.9.0", + + + + + "mquery": "5.0.0", + + + + + "ms": "2.1.3", + + + + + "sift": "17.1.3" + + + + }, + + + + "engines": { + + + + + "node": ">=16.20.1" + + + + }, + + + + "funding": { + + + + + "type": "opencollective", + + + + + "url": "https://opencollective.com/mongoose" + + + + } + + + }, + + + "node_modules/mpath": { + + + + "version": "0.9.0", + + + + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + + + + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=4.0.0" + + + + } + + + }, + + + "node_modules/mquery": { + + + + "version": "5.0.0", + + + + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + + + + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "debug": "4.x" + + + + }, + + + + "engines": { + + + + + "node": ">=14.0.0" + + + + } + + + }, + + + "node_modules/ms": { + + + + "version": "2.1.3", + + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + + + + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + + + + "license": "MIT" + + + }, + + + "node_modules/negotiator": { + + + + "version": "0.6.3", + + + + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + + + + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/node-addon-api": { + + + + "version": "5.1.0", + + + + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + + + + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + + + + "license": "MIT" + + + }, + + + "node_modules/node-fetch": { + + + + "version": "2.7.0", + + + + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + + + + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "whatwg-url": "^5.0.0" + + + + }, + + + + "engines": { + + + + + "node": "4.x || >=6.0.0" + + + + }, + + + + "peerDependencies": { + + + + + "encoding": "^0.1.0" + + + + }, + + + + "peerDependenciesMeta": { + + + + + "encoding": { + + + + + + "optional": true + + + + + } + + + + } + + + }, + + + "node_modules/node-fetch/node_modules/tr46": { + + + + "version": "0.0.3", + + + + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + + + + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + + + + "license": "MIT" + + + }, + + + "node_modules/node-fetch/node_modules/webidl-conversions": { + + + + "version": "3.0.1", + + + + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + + + + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + + + + "license": "BSD-2-Clause" + + + }, + + + "node_modules/node-fetch/node_modules/whatwg-url": { + + + + "version": "5.0.0", + + + + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + + + + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "tr46": "~0.0.3", + + + + + "webidl-conversions": "^3.0.0" + + + + } + + + }, + + + "node_modules/node-releases": { + + + + "version": "2.0.19", + + + + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + + + + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/nopt": { + + + + "version": "5.0.0", + + + + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + + + + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "abbrev": "1" + + + + }, + + + + "bin": { + + + + + "nopt": "bin/nopt.js" + + + + }, + + + + "engines": { + + + + + "node": ">=6" + + + + } + + + }, + + + "node_modules/normalize-path": { + + + + "version": "3.0.0", + + + + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + + + + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=0.10.0" + + + + } + + + }, + + + "node_modules/npmlog": { + + + + "version": "5.0.1", + + + + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + + + + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + + + + "deprecated": "This package is no longer supported.", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "are-we-there-yet": "^2.0.0", + + + + + "console-control-strings": "^1.1.0", + + + + + "gauge": "^3.0.0", + + + + + "set-blocking": "^2.0.0" + + + + } + + + }, + + + "node_modules/object-assign": { + + + + "version": "4.1.1", + + + + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + + + + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=0.10.0" + + + + } + + + }, + + + "node_modules/object-inspect": { + + + + "version": "1.13.3", + + + + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + + + + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/on-finished": { + + + + "version": "2.4.1", + + + + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + + + + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ee-first": "1.1.1" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/once": { + + + + "version": "1.4.0", + + + + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + + + + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "wrappy": "1" + + + + } + + + }, + + + "node_modules/p-limit": { + + + + "version": "3.1.0", + + + + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + + + + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "yocto-queue": "^0.1.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/p-locate": { + + + + "version": "5.0.0", + + + + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + + + + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "p-limit": "^3.0.2" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/package-json-from-dist": { + + + + "version": "1.0.1", + + + + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + + + + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + + + + "dev": true, + + + + "license": "BlueOak-1.0.0" + + + }, + + + "node_modules/parseurl": { + + + + "version": "1.3.3", + + + + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + + + + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/path-exists": { + + + + "version": "4.0.0", + + + + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + + + + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/path-is-absolute": { + + + + "version": "1.0.1", + + + + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + + + + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=0.10.0" + + + + } + + + }, + + + "node_modules/path-key": { + + + + "version": "3.1.1", + + + + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + + + + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/path-parse": { + + + + "version": "1.0.7", + + + + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + + + + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/path-scurry": { + + + + "version": "1.11.1", + + + + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + + + + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + + + + "dev": true, + + + + "license": "BlueOak-1.0.0", + + + + "dependencies": { + + + + + "lru-cache": "^10.2.0", + + + + + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=16 || 14 >=14.18" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/isaacs" + + + + } + + + }, + + + "node_modules/path-scurry/node_modules/lru-cache": { + + + + "version": "10.4.3", + + + + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + + + + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + + + + "dev": true, + + + + "license": "ISC" + + + }, + + + "node_modules/path-to-regexp": { + + + + "version": "0.1.12", + + + + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + + + + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + + + + "license": "MIT" + + + }, + + + "node_modules/pathval": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + + + + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 14.16" + + + + } + + + }, + + + "node_modules/picocolors": { + + + + "version": "1.1.1", + + + + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + + + + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + + + + "dev": true, + + + + "license": "ISC" + + + }, + + + "node_modules/picomatch": { + + + + "version": "2.3.1", + + + + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + + + + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8.6" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/jonschlinkert" + + + + } + + + }, + + + "node_modules/proxy-addr": { + + + + "version": "2.0.7", + + + + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + + + + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "forwarded": "0.2.0", + + + + + "ipaddr.js": "1.9.1" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.10" + + + + } + + + }, + + + "node_modules/punycode": { + + + + "version": "2.3.1", + + + + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + + + + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=6" + + + + } + + + }, + + + "node_modules/qs": { + + + + "version": "6.13.0", + + + + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + + + + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + + + + "license": "BSD-3-Clause", + + + + "dependencies": { + + + + + "side-channel": "^1.0.6" + + + + }, + + + + "engines": { + + + + + "node": ">=0.6" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/randombytes": { + + + + "version": "2.1.0", + + + + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + + + + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "safe-buffer": "^5.1.0" + + + + } + + + }, + + + "node_modules/range-parser": { + + + + "version": "1.2.1", + + + + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + + + + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/raw-body": { + + + + "version": "2.5.2", + + + + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + + + + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "bytes": "3.1.2", + + + + + "http-errors": "2.0.0", + + + + + "iconv-lite": "0.4.24", + + + + + "unpipe": "1.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/readable-stream": { + + + + "version": "3.6.2", + + + + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + + + + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "inherits": "^2.0.3", + + + + + "string_decoder": "^1.1.1", + + + + + "util-deprecate": "^1.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">= 6" + + + + } + + + }, + + + "node_modules/readdirp": { + + + + "version": "3.6.0", + + + + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + + + + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "picomatch": "^2.2.1" + + + + }, + + + + "engines": { + + + + + "node": ">=8.10.0" + + + + } + + + }, + + + "node_modules/regenerate": { + + + + "version": "1.4.2", + + + + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + + + + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/regenerate-unicode-properties": { + + + + "version": "10.2.0", + + + + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + + + + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "regenerate": "^1.4.2" + + + + }, + + + + "engines": { + + + + + "node": ">=4" + + + + } + + + }, + + + "node_modules/regenerator-runtime": { + + + + "version": "0.14.1", + + + + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + + + + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/regenerator-transform": { + + + + "version": "0.15.2", + + + + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + + + + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "@babel/runtime": "^7.8.4" + + + + } + + + }, + + + "node_modules/regexpu-core": { + + + + "version": "6.2.0", + + + + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + + + + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "regenerate": "^1.4.2", + + + + + "regenerate-unicode-properties": "^10.2.0", + + + + + "regjsgen": "^0.8.0", + + + + + "regjsparser": "^0.12.0", + + + + + "unicode-match-property-ecmascript": "^2.0.0", + + + + + "unicode-match-property-value-ecmascript": "^2.1.0" + + + + }, + + + + "engines": { + + + + + "node": ">=4" + + + + } + + + }, + + + "node_modules/regjsgen": { + + + + "version": "0.8.0", + + + + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + + + + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/regjsparser": { + + + + "version": "0.12.0", + + + + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + + + + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + + + + "dev": true, + + + + "license": "BSD-2-Clause", + + + + "dependencies": { + + + + + "jsesc": "~3.0.2" + + + + }, + + + + "bin": { + + + + + "regjsparser": "bin/parser" + + + + } + + + }, + + + "node_modules/regjsparser/node_modules/jsesc": { + + + + "version": "3.0.2", + + + + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + + + + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + + + + "dev": true, + + + + "license": "MIT", + + + + "bin": { + + + + + "jsesc": "bin/jsesc" + + + + }, + + + + "engines": { + + + + + "node": ">=6" + + + + } + + + }, + + + "node_modules/require-directory": { + + + + "version": "2.1.1", + + + + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + + + + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=0.10.0" + + + + } + + + }, + + + "node_modules/resolve": { + + + + "version": "1.22.10", + + + + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + + + + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "is-core-module": "^2.16.0", + + + + + "path-parse": "^1.0.7", + + + + + "supports-preserve-symlinks-flag": "^1.0.0" + + + + }, + + + + "bin": { + + + + + "resolve": "bin/resolve" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/rimraf": { + + + + "version": "3.0.2", + + + + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + + + + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + + + + "deprecated": "Rimraf versions prior to v4 are no longer supported", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "glob": "^7.1.3" + + + + }, + + + + "bin": { + + + + + "rimraf": "bin.js" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/isaacs" + + + + } + + + }, + + + "node_modules/safe-buffer": { + + + + "version": "5.2.1", + + + + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + + + + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + + + + "funding": [ + + + + + { + + + + + + "type": "github", + + + + + + "url": "https://github.com/sponsors/feross" + + + + + }, + + + + + { + + + + + + "type": "patreon", + + + + + + "url": "https://www.patreon.com/feross" + + + + + }, + + + + + { + + + + + + "type": "consulting", + + + + + + "url": "https://feross.org/support" + + + + + } + + + + ], + + + + "license": "MIT" + + + }, + + + "node_modules/safer-buffer": { + + + + "version": "2.1.2", + + + + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + + + + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + + + + "license": "MIT" + + + }, + + + "node_modules/semver": { + + + + "version": "7.6.3", + + + + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + + + + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + + + + "license": "ISC", + + + + "bin": { + + + + + "semver": "bin/semver.js" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/send": { + + + + "version": "0.19.0", + + + + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + + + + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "debug": "2.6.9", + + + + + "depd": "2.0.0", + + + + + "destroy": "1.2.0", + + + + + "encodeurl": "~1.0.2", + + + + + "escape-html": "~1.0.3", + + + + + "etag": "~1.8.1", + + + + + "fresh": "0.5.2", + + + + + "http-errors": "2.0.0", + + + + + "mime": "1.6.0", + + + + + "ms": "2.1.3", + + + + + "on-finished": "2.4.1", + + + + + "range-parser": "~1.2.1", + + + + + "statuses": "2.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.8.0" + + + + } + + + }, + + + "node_modules/send/node_modules/debug": { + + + + "version": "2.6.9", + + + + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + + + + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ms": "2.0.0" + + + + } + + + }, + + + "node_modules/send/node_modules/debug/node_modules/ms": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + + + + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + + + + "license": "MIT" + + + }, + + + "node_modules/send/node_modules/encodeurl": { + + + + "version": "1.0.2", + + + + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + + + + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/serialize-javascript": { + + + + "version": "6.0.2", + + + + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + + + + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + + + + "dev": true, + + + + "license": "BSD-3-Clause", + + + + "dependencies": { + + + + + "randombytes": "^2.1.0" + + + + } + + + }, + + + "node_modules/serve-static": { + + + + "version": "1.16.2", + + + + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + + + + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "encodeurl": "~2.0.0", + + + + + "escape-html": "~1.0.3", + + + + + "parseurl": "~1.3.3", + + + + + "send": "0.19.0" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.8.0" + + + + } + + + }, + + + "node_modules/set-blocking": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + + + + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + + + + "license": "ISC" + + + }, + + + "node_modules/setprototypeof": { + + + + "version": "1.2.0", + + + + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + + + + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + + + + "license": "ISC" + + + }, + + + "node_modules/shebang-command": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + + + + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "shebang-regex": "^3.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/shebang-regex": { + + + + "version": "3.0.0", + + + + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + + + + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/side-channel": { + + + + "version": "1.1.0", + + + + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + + + + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "es-errors": "^1.3.0", + + + + + "object-inspect": "^1.13.3", + + + + + "side-channel-list": "^1.0.0", + + + + + "side-channel-map": "^1.0.1", + + + + + "side-channel-weakmap": "^1.0.2" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/side-channel-list": { + + + + "version": "1.0.0", + + + + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + + + + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "es-errors": "^1.3.0", + + + + + "object-inspect": "^1.13.3" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/side-channel-map": { + + + + "version": "1.0.1", + + + + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + + + + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "call-bound": "^1.0.2", + + + + + "es-errors": "^1.3.0", + + + + + "get-intrinsic": "^1.2.5", + + + + + "object-inspect": "^1.13.3" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/side-channel-weakmap": { + + + + "version": "1.0.2", + + + + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + + + + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "call-bound": "^1.0.2", + + + + + "es-errors": "^1.3.0", + + + + + "get-intrinsic": "^1.2.5", + + + + + "object-inspect": "^1.13.3", + + + + + "side-channel-map": "^1.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/sift": { + + + + "version": "17.1.3", + + + + "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", + + + + "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==", + + + + "license": "MIT" + + + }, + + + "node_modules/signal-exit": { + + + + "version": "3.0.7", + + + + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + + + + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + + + + "license": "ISC" + + + }, + + + "node_modules/sparse-bitfield": { + + + + "version": "3.0.3", + + + + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + + + + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "memory-pager": "^1.0.2" + + + + } + + + }, + + + "node_modules/statuses": { + + + + "version": "2.0.1", + + + + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + + + + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/string_decoder": { + + + + "version": "1.3.0", + + + + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + + + + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "safe-buffer": "~5.2.0" + + + + } + + + }, + + + "node_modules/string-width": { + + + + "version": "4.2.3", + + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + + + + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "emoji-regex": "^8.0.0", + + + + + "is-fullwidth-code-point": "^3.0.0", + + + + + "strip-ansi": "^6.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/string-width-cjs": { + + + + "name": "string-width", + + + + "version": "4.2.3", + + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + + + + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "emoji-regex": "^8.0.0", + + + + + "is-fullwidth-code-point": "^3.0.0", + + + + + "strip-ansi": "^6.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/strip-ansi": { + + + + "version": "6.0.1", + + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ansi-regex": "^5.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/strip-ansi-cjs": { + + + + "name": "strip-ansi", + + + + "version": "6.0.1", + + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ansi-regex": "^5.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=8" + + + + } + + + }, + + + "node_modules/strip-json-comments": { + + + + "version": "3.1.1", + + + + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + + + + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=8" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + }, + + + "node_modules/superagent": { + + + + "version": "9.0.2", + + + + "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", + + + + "integrity": "sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "component-emitter": "^1.3.0", + + + + + "cookiejar": "^2.1.4", + + + + + "debug": "^4.3.4", + + + + + "fast-safe-stringify": "^2.1.1", + + + + + "form-data": "^4.0.0", + + + + + "formidable": "^3.5.1", + + + + + "methods": "^1.1.2", + + + + + "mime": "2.6.0", + + + + + "qs": "^6.11.0" + + + + }, + + + + "engines": { + + + + + "node": ">=14.18.0" + + + + } + + + }, + + + "node_modules/superagent/node_modules/mime": { + + + + "version": "2.6.0", + + + + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + + + + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "bin": { + + + + + "mime": "cli.js" + + + + }, + + + + "engines": { + + + + + "node": ">=4.0.0" + + + + } + + + }, + + + "node_modules/supertest": { + + + + "version": "7.0.0", + + + + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.0.0.tgz", + + + + "integrity": "sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "methods": "^1.1.2", + + + + + "superagent": "^9.0.1" + + + + }, + + + + "engines": { + + + + + "node": ">=14.18.0" + + + + } + + + }, + + + "node_modules/supports-color": { + + + + "version": "8.1.1", + + + + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + + + + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "has-flag": "^4.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/chalk/supports-color?sponsor=1" + + + + } + + + }, + + + "node_modules/supports-preserve-symlinks-flag": { + + + + "version": "1.0.0", + + + + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + + + + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.4" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/ljharb" + + + + } + + + }, + + + "node_modules/tar": { + + + + "version": "6.2.1", + + + + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + + + + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "chownr": "^2.0.0", + + + + + "fs-minipass": "^2.0.0", + + + + + "minipass": "^5.0.0", + + + + + "minizlib": "^2.1.1", + + + + + "mkdirp": "^1.0.3", + + + + + "yallist": "^4.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/to-regex-range": { + + + + "version": "5.0.1", + + + + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + + + + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "is-number": "^7.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=8.0" + + + + } + + + }, + + + "node_modules/toidentifier": { + + + + "version": "1.0.1", + + + + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + + + + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=0.6" + + + + } + + + }, + + + "node_modules/tr46": { + + + + "version": "4.1.1", + + + + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + + + + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "punycode": "^2.3.0" + + + + }, + + + + "engines": { + + + + + "node": ">=14" + + + + } + + + }, + + + "node_modules/type-is": { + + + + "version": "1.6.18", + + + + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + + + + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "media-typer": "0.3.0", + + + + + "mime-types": "~2.1.24" + + + + }, + + + + "engines": { + + + + + "node": ">= 0.6" + + + + } + + + }, + + + "node_modules/undici-types": { + + + + "version": "6.20.0", + + + + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + + + + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + + + + "dev": true, + + + + "license": "MIT" + + + }, + + + "node_modules/unicode-canonical-property-names-ecmascript": { + + + + "version": "2.0.1", + + + + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + + + + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=4" + + + + } + + + }, + + + "node_modules/unicode-match-property-ecmascript": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + + + + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "unicode-canonical-property-names-ecmascript": "^2.0.0", + + + + + "unicode-property-aliases-ecmascript": "^2.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=4" + + + + } + + + }, + + + "node_modules/unicode-match-property-value-ecmascript": { + + + + "version": "2.2.0", + + + + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + + + + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=4" + + + + } + + + }, + + + "node_modules/unicode-property-aliases-ecmascript": { + + + + "version": "2.1.0", + + + + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + + + + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=4" + + + + } + + + }, + + + "node_modules/unpipe": { + + + + "version": "1.0.0", + + + + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + + + + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/update-browserslist-db": { + + + + "version": "1.1.2", + + + + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + + + + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + + + + "dev": true, + + + + "funding": [ + + + + + { + + + + + + "type": "opencollective", + + + + + + "url": "https://opencollective.com/browserslist" + + + + + }, + + + + + { + + + + + + "type": "tidelift", + + + + + + "url": "https://tidelift.com/funding/github/npm/browserslist" + + + + + }, + + + + + { + + + + + + "type": "github", + + + + + + "url": "https://github.com/sponsors/ai" + + + + + } + + + + ], + + + + "license": "MIT", + + + + "dependencies": { + + + + + "escalade": "^3.2.0", + + + + + "picocolors": "^1.1.1" + + + + }, + + + + "bin": { + + + + + "update-browserslist-db": "cli.js" + + + + }, + + + + "peerDependencies": { + + + + + "browserslist": ">= 4.21.0" + + + + } + + + }, + + + "node_modules/util-deprecate": { + + + + "version": "1.0.2", + + + + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + + + + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + + + + "license": "MIT" + + + }, + + + "node_modules/utils-merge": { + + + + "version": "1.0.1", + + + + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + + + + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.4.0" + + + + } + + + }, + + + "node_modules/vary": { + + + + "version": "1.1.2", + + + + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + + + + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">= 0.8" + + + + } + + + }, + + + "node_modules/webidl-conversions": { + + + + "version": "7.0.0", + + + + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + + + + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + + + + "license": "BSD-2-Clause", + + + + "engines": { + + + + + "node": ">=12" + + + + } + + + }, + + + "node_modules/whatwg-url": { + + + + "version": "13.0.0", + + + + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + + + + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + + + + "license": "MIT", + + + + "dependencies": { + + + + + "tr46": "^4.1.1", + + + + + "webidl-conversions": "^7.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=16" + + + + } + + + }, + + + "node_modules/which": { + + + + "version": "2.0.2", + + + + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + + + + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + + + + "dev": true, + + + + "license": "ISC", + + + + "dependencies": { + + + + + "isexe": "^2.0.0" + + + + }, + + + + "bin": { + + + + + "node-which": "bin/node-which" + + + + }, + + + + "engines": { + + + + + "node": ">= 8" + + + + } + + + }, + + + "node_modules/wide-align": { + + + + "version": "1.1.5", + + + + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + + + + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + + + + "license": "ISC", + + + + "dependencies": { + + + + + "string-width": "^1.0.2 || 2 || 3 || 4" + + + + } + + + }, + + + "node_modules/workerpool": { + + + + "version": "6.5.1", + + + + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + + + + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + + + + "dev": true, + + + + "license": "Apache-2.0" + + + }, + + + "node_modules/wrap-ansi": { + + + + "version": "7.0.0", + + + + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + + + + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ansi-styles": "^4.0.0", + + + + + "string-width": "^4.1.0", + + + + + "strip-ansi": "^6.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + + + + } + + + }, + + + "node_modules/wrap-ansi-cjs": { + + + + "name": "wrap-ansi", + + + + "version": "7.0.0", + + + + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + + + + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "ansi-styles": "^4.0.0", + + + + + "string-width": "^4.1.0", + + + + + "strip-ansi": "^6.0.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + + + + } + + + }, + + + "node_modules/wrappy": { + + + + "version": "1.0.2", + + + + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + + + + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + + + + "license": "ISC" + + + }, + + + "node_modules/y18n": { + + + + "version": "5.0.8", + + + + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + + + + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + + + + "dev": true, + + + + "license": "ISC", + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/yallist": { + + + + "version": "4.0.0", + + + + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + + + + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + + + + "license": "ISC" + + + }, + + + "node_modules/yargs": { + + + + "version": "16.2.0", + + + + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + + + + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "cliui": "^7.0.2", + + + + + "escalade": "^3.1.1", + + + + + "get-caller-file": "^2.0.5", + + + + + "require-directory": "^2.1.1", + + + + + "string-width": "^4.2.0", + + + + + "y18n": "^5.0.5", + + + + + "yargs-parser": "^20.2.2" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/yargs-parser": { + + + + "version": "20.2.9", + + + + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + + + + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + + + + "dev": true, + + + + "license": "ISC", + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/yargs-unparser": { + + + + "version": "2.0.0", + + + + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + + + + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + + + + "dev": true, + + + + "license": "MIT", + + + + "dependencies": { + + + + + "camelcase": "^6.0.0", + + + + + "decamelize": "^4.0.0", + + + + + "flat": "^5.0.2", + + + + + "is-plain-obj": "^2.1.0" + + + + }, + + + + "engines": { + + + + + "node": ">=10" + + + + } + + + }, + + + "node_modules/yocto-queue": { + + + + "version": "0.1.0", + + + + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + + + + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + + + + "dev": true, + + + + "license": "MIT", + + + + "engines": { + + + + + "node": ">=10" + + + + }, + + + + "funding": { + + + + + "url": "https://github.com/sponsors/sindresorhus" + + + + } + + + } + } } diff --git a/server/package.json b/server/package.json index d3287d8..ffb9715 100644 --- a/server/package.json +++ b/server/package.json @@ -1,22 +1,76 @@ { "name": "server", + "type": "module", + "version": "1.0.0", + "main": "index.js", - "type": "module", + "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "server": "node index.js", - "db:seed": "node scripts/seed.js" + + + "test": "mocha 'test/**/*.js'", + + + "server": "node index.js", + + + "db:seed": "node scripts/seed.js" + }, + "author": "", + "license": "ISC", + "description": "", + "dependencies": { - "bcrypt": "^5.1.1", - "cors": "^2.8.5", - "express": "^4.21.2", - "mongoose": "^8.9.5" + + + "bcrypt": "^5.1.1", + + + "cors": "^2.8.5", + + + "express": "^4.21.2", + + + "mongoose": "^8.9.5" + + }, + + "devDependencies": { + + + "@babel/core": "^7.26.0", + + + "@babel/preset-env": "^7.26.0", + + + "@types/chai": "^5.0.1", + + + "@types/express": "^5.0.0", + + + "@types/mocha": "^10.0.10", + + + "@types/supertest": "^6.0.2", + + + "chai": "^5.1.2", + + + "mocha": "^11.0.1", + + + "supertest": "^7.0.0" + } } diff --git a/server/router.js b/server/router.js index f2b4b05..cc35aeb 100644 --- a/server/router.js +++ b/server/router.js @@ -20,4 +20,19 @@ router.post('/user/authenticate', login); router.put('/user/uploaded', updateUploaded); router.put('/user/favorites', updateFavorites); + +router.get("/status" ,(req, res) => { + res.status(200).send("Server is running βœ¨πŸš€"); +}); + +router.post("/" ,(req, res) => { + res.status(200).json(req.body); +}); + + +router.get("/PORT", (req, res) => { + const PORT = process.env.PORT || 3000; + res.status(404).send(`Server listening on port ${PORT} πŸ™Œβœ¨`); +}); + export default router; \ No newline at end of file diff --git a/server/test/server.test.js b/server/test/server.test.js new file mode 100644 index 0000000..451edff --- /dev/null +++ b/server/test/server.test.js @@ -0,0 +1,37 @@ +import supertest from "supertest"; +import { expect } from "chai"; +import express from "express"; +import router from "../router.js"; + +const app = express(); +app.use(express.json()); +app.use(router); + +const PORT = process.env.PORT || 3000; +const request = supertest(app); + +describe("Basic SERVER test", ()=> { + + it("Should respond to GET /status πŸš€", async () => { + + const res = await request.get("/status"); + expect(res.status).equal(200); + expect(res.text).equal("Server is running βœ¨πŸš€"); + }); + + it("Should listen server on PORT πŸ›°οΈ", async () => { + + const res = await request.get("/PORT"); + expect(res.status).equal(404); + expect(res.text).equal(`Server listening on port ${PORT} πŸ™Œβœ¨`); + }); + + it("Should POST data ✨", async () => { + const data = { message: "Hello, Server!"} + const res = await request.post("/").send(data); + expect(res.status).to.equal(200); + expect(res.body).to.deep.equal(data); + }); + + +}); \ No newline at end of file From 564b424937baf2e84e78ccdc3cb9763f3351535c Mon Sep 17 00:00:00 2001 From: J7SUS Date: Sat, 8 Feb 2025 17:02:44 +0100 Subject: [PATCH 15/16] fix: Readme --- .gitignore | 25 +- Changed/App.jsx | 75 +++ Changed/App.tsx | 30 + README.md | 93 ++- client/.vite/deps/_metadata.json | 8 + client/.vite/deps/package.json | 3 + client/src/ApiClient.js | 73 ++- .../recipedetailspage/GeneralCard.tsx | 82 +-- .../recipedetailspage/Ingredients.tsx | 44 +- .../recipedetailspage/Instructions.tsx | 30 +- .../recipedetailspage/RecipeDetailsPage.tsx | 43 +- .../components/recipedetailspage/Reviews.tsx | 105 ++-- client/src/hooks/useFetchData.ts | 6 +- eslint.config.mjs | 37 +- package-lock.json | 543 +++++++++++++++++- package.json | 9 +- server/controllers/categoryController.js | 10 +- server/controllers/recipeController.js | 73 ++- server/controllers/userController.js | 72 ++- server/index.js | 12 +- server/models/category.js | 10 +- server/models/index.js | 6 +- server/models/recipe.js | 43 +- server/models/user.js | 33 +- server/router.js | 57 +- server/scripts/seed.js | 93 ++- server/test/server.test.js | 41 +- 27 files changed, 1270 insertions(+), 386 deletions(-) create mode 100644 Changed/App.jsx create mode 100644 Changed/App.tsx create mode 100644 client/.vite/deps/_metadata.json create mode 100644 client/.vite/deps/package.json diff --git a/.gitignore b/.gitignore index dbea929..2356b7a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,14 +5,31 @@ logs *.log npm-debug.log* +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + # Dependency directories node_modules # Optional npm cache directory .npm -# Images (now accessed from cloud) -images +# Optional REPL history +.node_repl_history -# Ignore all .json files -.json \ No newline at end of file +# Custom +private +build +dist +.env.local +.env.development.local +.env.test.local +.env.production.local \ No newline at end of file diff --git a/Changed/App.jsx b/Changed/App.jsx new file mode 100644 index 0000000..67aa3c4 --- /dev/null +++ b/Changed/App.jsx @@ -0,0 +1,75 @@ +import { createContext, useEffect, useState } from "react"; +import "./App.css"; +import { getCategories, getLatestRecipes, login } from "./ApiClient"; +import { CategoryList } from "./components/CategoryList"; +import { Hero } from "./components/Hero"; +import { Navbar } from "./components/Navbar"; +import { CategoryPage } from "./components/CategoryPage"; +import { RecipeDetailsPage } from "./components/recipedetailspage/RecipeDetailsPage"; +import { RecipeList } from "./components/RecipeList"; +import { Routes, Route } from "react-router"; +import { Profile } from "./components/Profile"; +import { SearchResultPage } from "./components/SearchResultPage"; + +export const AuthContext = createContext(null); +function App() { + const [categories, setCategories] = useState([]); + const [latest, setLatest] = useState([]); + + const [currentUser, setCurrentUser] = useState({}); + + useEffect(() => { + getCategories() + .then((data) => setCategories(data)) + .catch((e) => console.log(e)); + }, []); + + useEffect(() => { + getLatestRecipes() + .then((data) => setLatest(data)) + .catch((e) => console.log(e)); + }, []); + + useEffect(() => { + login({ email: "zappe.thomson@test.com", password: "Test123!" }) + .then((data) => setCurrentUser(data)) + .catch((e) => console.log(e)); + }, []); + + return ( + <> + + +
+ + + +
+ +
+ +
+ + } + /> + } /> + } + /> + } /> + } /> +
+
+
+ + ); +} + +export default App; diff --git a/Changed/App.tsx b/Changed/App.tsx new file mode 100644 index 0000000..afbe925 --- /dev/null +++ b/Changed/App.tsx @@ -0,0 +1,30 @@ +import React from "react"; +import "./App.css"; +import { AuthContex } from "./context/AuthContext"; +import { useFetchData } from "./hooks/useFetchData"; +import { Navbar } from "./components/Navbar"; +import { AppRoutes } from "./AppRoutes"; + +function App() { + const { categories, latestRecipes, currentUser } = useFetchData(); + + return ( + <> + + +
+ +
+
+ + ); +} + +export default App; + +//*| The logic for fetching data (categories, recipes, and user login) | +//*| via useEffect will be moved into a custom hook named useFetchData.| + +//*| All routes inside will be moved to a separate component | +//*| called AppRoutes to make App.jsx more focused on managing global | +//*| state and context. | diff --git a/README.md b/README.md index 690ab65..c6be48a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,76 @@ -# Cooksphere +
+ StackTally logo +

Cooksphere

+

"Cooksphere creates a space where users can discover,
save or share recipes."

+ + +[![Node.js](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white)](https://nodejs.org/) +[![Express](https://img.shields.io/badge/express.js-%23404d59.svg?style=for-the-badge&logo=express&logoColor=%2361DAFB)](https://expressjs.com/) +[![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB)](https://reactjs.org/) +[![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/) +[![Context API](https://img.shields.io/badge/contextapi-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB)](https://reactjs.org/docs/context.html) +![MongoDB](https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge&logo=mongodb&logoColor=white) +[![Cypress](https://img.shields.io/badge/cypress-%2317202C.svg?style=for-the-badge&logo=cypress&logoColor=white)](https://www.cypress.io/) +[![Mongoose](https://img.shields.io/badge/mongoose-%238A4C39.svg?style=for-the-badge&logo=mongoose&logoColor=white)](https://mongoosejs.com/) +[![Mocha](https://img.shields.io/badge/mocha-%23D8B545.svg?style=for-the-badge&logo=mocha&logoColor=white)](https://mochajs.org/) +[![Chai](https://img.shields.io/badge/chai-%23A30000.svg?style=for-the-badge&logo=chai&logoColor=white)](https://www.chaijs.com/) + +
+ + + +## Recap + +During this refactoring, we improved the project's structure and performance by updating key components located in the ./RecipeDetailsPage/ + +* RecipeDetailsPage.tsx, +* GeneralCard.tsx, +* Ingredients.tsx, +* Instructions.tsx +* Reviews.tsx + +By simplifying these components, centralising logic. + +## Key Benefits + +* Increased safety and clarity thanks to TypeScript. +* Cleaner and more maintainable code with centralised logic and route reorganisation. +* Better user experience with error handling and visual feedback. +* Ready to scale with a modular structure and robust typing. + + +## Key Changes + +1. Migration to TypeScript: + * We migrated the project from JavaScript to TypeScript, adding type safety and improving code clarity. + * Defined interfaces for key data structures (categories, recipes, users) in types.d.ts. + * Added types to states and functions in App.tsx and other components. + +2. Centralised Data Logic: + * Created a custom hook called useFetchData to handle data fetching (categories, recipes, and user login). + * This simplified App.tsx and centralised the fetching logic in one place. + +3. Improved Route Organisation: + * Moved all routes to a separate component called AppRoutes, allowing App.tsx to focus on global state and context management. + +4. Authentication Handling with AuthContext: + * Created an AuthContext to manage the authenticated user’s state and avoid "prop drilling". + * Added default values and safe handling of null values using optional chaining (?.) and fallbacks. + +5. Project Structure Improvements: + * Reorganised files for better separation of concerns (e.g., moved AuthContext to a dedicated folder). + * Gradually migrated components to TypeScript (e.g., Navbar.jsx to Navbar.tsx). + +6. Refactoring of Key Components in components/RecipeDetailsPage: + * RecipeDetailsPage.tsx: Simplified the component by breaking it into smaller, reusable parts. + * GeneralCard.tsx: Improved reusability and type safety. + * Ingredients.tsx: Enhanced readability and maintainability. + * Instructions.tsx: Streamlined the logic and improved error handling. + * Reviews.tsx: Added better validation and reusable logic for user reviews.# Cooksphere Cooksphere creates a space where users can discover, save or share recipes. -# Frontend +## Frontend The frontend shows categories of recipes. The user can either look into those or search for recipes. Both the search result page and the category page show a list of recipes which can be filtered and sorted. On the recipe details page users see information about the recipe. At the bottom of the page are reviews of other users listed and a form to post a review and rate the recipe. In the profile are the user's favorite and uploaded recipes listed. Furthermore he can upload a recipe by filling the form. The frontend was built with React and TailwindCSS. Uploaded recipe images are sent to Cloudinary. Assets like category images are taken from Unsplash and the profile avatar or logo are AI generated. @@ -30,7 +98,7 @@ npm install npm run server ``` -Once both the frontend and the backend are running open http://localhost:5173 in your browser. Have fun! +Once both the frontend and the backend are running open [localhost:5173](http://localhost:5173) in your browser. Have fun! ## Known Issues and Next Todos - User updates are not reflected immediately, so when adding a recipe as a favorite or uploading a new one, you have to refresh the browser page manually to fetch the updated user @@ -38,4 +106,21 @@ Once both the frontend and the backend are running open http://localhost:5173 in - Authentication is missing (frontend and backend), you are currently logged in as one user (s. in App.jsx) - Use env variables for PORTs, URLs etc - Split router (backend) and apiclient (frontend) to multiple files to separate recipe and user related functions -- Create more common components like button or headings \ No newline at end of file +- Create more common components like button or headings + +## +

Solo Project by

+ + + + +## +

Legacy Project Team

+ + j7sus's GitHub Avatar + lmleg9's GitHub Avatar + +## +:)
+ ![License: MIT](https://img.shields.io/badge/License-MIT-blueviolet.svg) +
\ No newline at end of file diff --git a/client/.vite/deps/_metadata.json b/client/.vite/deps/_metadata.json new file mode 100644 index 0000000..7015355 --- /dev/null +++ b/client/.vite/deps/_metadata.json @@ -0,0 +1,8 @@ +{ + "hash": "bd8b89b5", + "configHash": "6c6f5b0c", + "lockfileHash": "e3b0c442", + "browserHash": "5a3aece1", + "optimized": {}, + "chunks": {} +} \ No newline at end of file diff --git a/client/.vite/deps/package.json b/client/.vite/deps/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/client/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/client/src/ApiClient.js b/client/src/ApiClient.js index 69ef04f..7559817 100644 --- a/client/src/ApiClient.js +++ b/client/src/ApiClient.js @@ -1,10 +1,10 @@ -const BASE_URL = 'http://localhost:3000'; +const BASE_URL = "http://localhost:3000"; -async function makeServerRequest (endpoint, options) { +async function makeServerRequest(endpoint, options) { try { const response = await fetch(`${BASE_URL}/${endpoint}`, options); if (!response.ok) { - throw new Error('Error fetching data'); + throw new Error("Error fetching data"); } return await response.json(); } catch (error) { @@ -30,7 +30,7 @@ const getRecipe = async (recipeId) => { const getCategories = async () => { try { - return await makeServerRequest('categories'); + return await makeServerRequest("categories"); } catch (e) { throw new Error(e); } @@ -38,7 +38,7 @@ const getCategories = async () => { const getLatestRecipes = async () => { try { - return await makeServerRequest('recipes/latest'); + return await makeServerRequest("recipes/latest"); } catch (e) { throw new Error(e); } @@ -46,10 +46,10 @@ const getLatestRecipes = async () => { const uploadRecipe = async (recipeData) => { try { - return await makeServerRequest('recipe', { - method: 'POST', + return await makeServerRequest("recipe", { + method: "POST", body: JSON.stringify(recipeData), - headers: {'Content-Type': 'application/json'} + headers: { "Content-Type": "application/json" }, }); } catch (e) { throw new Error(e); @@ -58,12 +58,15 @@ const uploadRecipe = async (recipeData) => { const uploadImage = async (formData) => { try { - const response = await fetch('https://api.cloudinary.com/v1_1/drm5qsq0p/image/upload', { - method: 'POST', - body: formData, - }); + const response = await fetch( + "https://api.cloudinary.com/v1_1/drm5qsq0p/image/upload", + { + method: "POST", + body: formData, + } + ); if (!response.ok) { - throw new Error('Error uploading image'); + throw new Error("Error uploading image"); } return await response.json(); } catch (e) { @@ -71,12 +74,12 @@ const uploadImage = async (formData) => { } }; -const login = async ({email, password}) => { +const login = async ({ email, password }) => { try { - return await makeServerRequest('user/authenticate', { - method: 'POST', - body: JSON.stringify({email, password}), - headers: {'Content-Type': 'application/json'} + return await makeServerRequest("user/authenticate", { + method: "POST", + body: JSON.stringify({ email, password }), + headers: { "Content-Type": "application/json" }, }); } catch (e) { throw new Error(e); @@ -85,10 +88,10 @@ const login = async ({email, password}) => { const updateUploaded = async (user, recipe) => { try { - return await makeServerRequest('user/uploaded', { - method: 'PUT', - body: JSON.stringify({user, recipe}), - headers: {'Content-Type': 'application/json'} + return await makeServerRequest("user/uploaded", { + method: "PUT", + body: JSON.stringify({ user, recipe }), + headers: { "Content-Type": "application/json" }, }); } catch (e) { throw new Error(e); @@ -97,10 +100,10 @@ const updateUploaded = async (user, recipe) => { const updateFavorites = async (user, recipe, favorite) => { try { - return await makeServerRequest('user/favorites', { - method: 'PUT', - body: JSON.stringify({user, recipe, favorite}), - headers: {'Content-Type': 'application/json'} + return await makeServerRequest("user/favorites", { + method: "PUT", + body: JSON.stringify({ user, recipe, favorite }), + headers: { "Content-Type": "application/json" }, }); } catch (e) { throw new Error(e); @@ -118,13 +121,25 @@ const searchRecipes = async (searchinput) => { const rateAndReview = async (recipeId, reviewObj) => { try { return await makeServerRequest(`recipes/${recipeId}`, { - method: 'PUT', + method: "PUT", body: JSON.stringify(reviewObj), - headers: {'Content-Type': 'application/json'} + headers: { "Content-Type": "application/json" }, }); } catch (e) { throw new Error(e); } }; -export {getRecipes, getRecipe, getCategories, getLatestRecipes, uploadRecipe, uploadImage, login, updateUploaded, updateFavorites, searchRecipes, rateAndReview}; \ No newline at end of file +export { + getRecipes, + getRecipe, + getCategories, + getLatestRecipes, + uploadRecipe, + uploadImage, + login, + updateUploaded, + updateFavorites, + searchRecipes, + rateAndReview, +}; diff --git a/client/src/components/recipedetailspage/GeneralCard.tsx b/client/src/components/recipedetailspage/GeneralCard.tsx index 19fe2ce..5f22d79 100644 --- a/client/src/components/recipedetailspage/GeneralCard.tsx +++ b/client/src/components/recipedetailspage/GeneralCard.tsx @@ -1,34 +1,35 @@ -import React from 'react'; -import { Rating } from '../Rating'; -import { Link } from 'react-router'; +import React from "react"; +import { Rating } from "../Rating"; +import { Link } from "react-router"; import { useContext, useEffect, useState } from "react"; -import { AuthContex } from '../../context/AuthContext'; -import {updateFavorites} from '../../ApiClient'; -import { GeneralCardProps } from '../../types'; -import { User } from '../../types'; - +import { AuthContex } from "../../context/AuthContext"; +import { updateFavorites } from "../../ApiClient"; +import { GeneralCardProps } from "../../types"; +import { User } from "../../types"; export function GeneralCard({ recipe }: GeneralCardProps) { - - const currentUser= useContext(AuthContex) as User | null; + const currentUser = useContext(AuthContex) as User | null; const [favorite, setFavorite] = useState(false); useEffect(() => { - if (currentUser && currentUser.favoriteRecipes){// Add validation for currentUser - console.log(favorite) - console.log(currentUser) + if (currentUser && currentUser.favoriteRecipes) { + // Add validation for currentUser + console.log(favorite); + console.log(currentUser); const isFavorite = currentUser.favoriteRecipes.some( - favoriteRecipe => favoriteRecipe._id === recipe._id + (favoriteRecipe) => favoriteRecipe._id === recipe._id ); setFavorite(isFavorite); } }, [currentUser]); - function formatCookingTime (time: number):string { - const minutes = time%60; - const hours = (time-minutes)/60; + function formatCookingTime(time: number): string { + const minutes = time % 60; + const hours = (time - minutes) / 60; - return (hours > 0 ? hours + 'h ' : '') + (minutes > 0 ? minutes + 'min' : ''); + return ( + (hours > 0 ? hours + "h " : "") + (minutes > 0 ? minutes + "min" : "") + ); } async function handleFavorite() { @@ -40,29 +41,44 @@ export function GeneralCard({ recipe }: GeneralCardProps) { return ( <> -
-
- recipe image -
+
+
+ recipe image +
-
-

{recipe.name}

- - {recipe.category} +
+

{recipe.name}

+ + + {recipe.category} +
- {formatCookingTime(recipe.cookingTimeInMinutes)} + + {formatCookingTime(recipe.cookingTimeInMinutes)} +
-
- -
- ) + ); } diff --git a/client/src/components/recipedetailspage/Ingredients.tsx b/client/src/components/recipedetailspage/Ingredients.tsx index 7caf9a0..d00efe3 100644 --- a/client/src/components/recipedetailspage/Ingredients.tsx +++ b/client/src/components/recipedetailspage/Ingredients.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React from "react"; // Define the type for a single ingredient type Ingredient = { @@ -7,26 +7,34 @@ type Ingredient = { }; type IngredientsProps = { - ingredients: Ingredient[]; // Ingredients is an array of strings }; -export function Ingredients({ ingredients }: IngredientsProps ) { +export function Ingredients({ ingredients }: IngredientsProps) { return ( <> -
-

Ingredients - list-icon -

-
    - {ingredients.map((ingredient, index) => { - return
  • 0 ? 'border-t border-t-solid' : '') + ' flex gap-2 p-2'}> -
    {ingredient.measure}
    -
    {ingredient.ingredient}
    -
  • - })} -
-
+
+

+ Ingredients + list-icon +

+
    + {ingredients.map((ingredient, index) => { + return ( +
  • 0 ? "border-t border-t-solid" : "") + + " flex gap-2 p-2" + } + > +
    {ingredient.measure}
    +
    {ingredient.ingredient}
    +
  • + ); + })} +
+
- ) -} \ No newline at end of file + ); +} diff --git a/client/src/components/recipedetailspage/Instructions.tsx b/client/src/components/recipedetailspage/Instructions.tsx index 9ce44c6..9fca019 100644 --- a/client/src/components/recipedetailspage/Instructions.tsx +++ b/client/src/components/recipedetailspage/Instructions.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React from "react"; type InstructionsProps = { instructions: string[]; // Instructions is an array of strings @@ -7,21 +7,25 @@ type InstructionsProps = { export function Instructions({ instructions }: InstructionsProps) { return ( <> -
-

Instructions - spoon-icon +
+

+ Instructions + spoon-icon

-
    +
      {instructions.map((instruction, index) => ( - -
    1. -
      {'Step ' + (index+1)}
      - {instruction} -
    2. - +
    3. +
      + {"Step " + (index + 1)} +
      + {instruction} +
    4. ))}
- ) -} \ No newline at end of file + ); +} diff --git a/client/src/components/recipedetailspage/RecipeDetailsPage.tsx b/client/src/components/recipedetailspage/RecipeDetailsPage.tsx index 5949a42..2ade0d1 100644 --- a/client/src/components/recipedetailspage/RecipeDetailsPage.tsx +++ b/client/src/components/recipedetailspage/RecipeDetailsPage.tsx @@ -1,36 +1,39 @@ -import React from 'react'; -import { useEffect, useState } from 'react'; -import { useParams } from 'react-router'; -import { getRecipe } from '../../ApiClient'; -import { GeneralCard } from './GeneralCard'; -import { Ingredients } from './Ingredients'; -import { Instructions } from './Instructions'; -import { Reviews } from './Reviews'; -import { Recipe } from '../../types'; +import React from "react"; +import { useEffect, useState } from "react"; +import { useParams } from "react-router"; +import { getRecipe } from "../../ApiClient"; +import { GeneralCard } from "./GeneralCard"; +import { Ingredients } from "./Ingredients"; +import { Instructions } from "./Instructions"; +import { Reviews } from "./Reviews"; +import { Recipe } from "../../types"; -export function RecipeDetailsPage () { - const { recipeId} = useParams<{ recipeId: string }>(); +export function RecipeDetailsPage() { + const { recipeId } = useParams<{ recipeId: string }>(); const [recipe, setRecipe] = useState(null); - - + useEffect(() => { getRecipe(recipeId) - .then(data => setRecipe(data)) - .catch(e => console.log(e)); + .then((data) => setRecipe(data)) + .catch((e) => console.log(e)); }, [recipeId]); if (!recipe) { - return (
Loading...
) + return
Loading...
; } return ( <> -
- +
+ - review.message.trim() !== '')}/> + review.message.trim() !== "" + )} + />
); -}; \ No newline at end of file +} diff --git a/client/src/components/recipedetailspage/Reviews.tsx b/client/src/components/recipedetailspage/Reviews.tsx index 1e072b8..9005401 100644 --- a/client/src/components/recipedetailspage/Reviews.tsx +++ b/client/src/components/recipedetailspage/Reviews.tsx @@ -1,31 +1,30 @@ import React, { FormEvent, useState, useContext } from "react"; import { Rating } from "../Rating"; -import { AuthContex } from "../../context/AuthContext"; +import { AuthContex } from "../../context/AuthContext"; import { rateAndReview } from "../../ApiClient"; import { useParams } from "react-router"; import { Checkbox } from "../common/Checkbox"; import { NewReview, ReviewsProps } from "../../types"; - -export function Reviews ({reviews}: ReviewsProps) { - const {recipeId} = useParams< { recipeId: string } >(); +export function Reviews({ reviews }: ReviewsProps) { + const { recipeId } = useParams<{ recipeId: string }>(); const currentUser = useContext(AuthContex); - const [review, setReview] = useState(''); + const [review, setReview] = useState(""); const [rating, setRating] = useState(0); const [onlyRating, setOnlyRating] = useState(false); - + const handleChange = (event: React.ChangeEvent) => { const newVal = event.target.checked; setOnlyRating(newVal); }; - - function formatDate (timestamp: string) { - const date = timestamp.split('T')[0]; - return date.split('-').reverse().join('.'); - }; - async function handleSubmit (event: FormEvent) { + function formatDate(timestamp: string) { + const date = timestamp.split("T")[0]; + return date.split("-").reverse().join("."); + } + + async function handleSubmit(event: FormEvent) { event.preventDefault(); if (!currentUser) return; @@ -33,47 +32,66 @@ export function Reviews ({reviews}: ReviewsProps) { // author: `${currentUser.firstname} ${currentUser.lastname}`, recipeId: recipeId as string, message: review, - rating: rating + rating: rating, // timestamp: (new Date()).toISOString() }; await rateAndReview(recipeId, newReview); setReview(""); setRating(0); setOnlyRating(false); - }; + } function validate() { - if (onlyRating && rating===0) return true; - else if(!onlyRating && (rating===0 || review.trim() === '')) return true; + if (onlyRating && rating === 0) return true; + else if (!onlyRating && (rating === 0 || review.trim() === "")) return true; return false; - }; + } return ( <> -
-

Reviews

-
- Here you can rate the recipe and give feedback to the creator and other users. You can also rate the recipe without writing a review. - - - - - -
- {reviews.map((review, index) => { - return ( +
+

+ Reviews +

+
+ + Here you can rate the recipe and give feedback to the creator and + other users. You can also rate the recipe without writing a review. + + + + + + +
+ {reviews.map((review, index) => { + return ( <> -
+
{review.author} {formatDate(review.timestamp)} @@ -81,9 +99,10 @@ export function Reviews ({reviews}: ReviewsProps) { {review.message}
- )})} -
+ ); + })} +
); -} \ No newline at end of file +} diff --git a/client/src/hooks/useFetchData.ts b/client/src/hooks/useFetchData.ts index 4e7fd5f..c326174 100644 --- a/client/src/hooks/useFetchData.ts +++ b/client/src/hooks/useFetchData.ts @@ -24,10 +24,10 @@ export const useFetchData = () => { console.log(` πŸš€ Starting the Cooksphere app! - ✨ Shoutout to Murak for the incredible work on this project! + ✨ Shoutout to Burak for the incredible work on this project! ⚠️ The only reason we are making changes is because CodeWorks demands it. - If it were up to us, I'd leave this masterpiece untouched. πŸ™Œ - Let's call this "forced improvement." πŸ˜… + If it were up to us, I'd leave this masterpiece untouched. πŸ™Œ + Let's call this "forced improvement." πŸ˜… `); }, []); diff --git a/eslint.config.mjs b/eslint.config.mjs index 61e342e..ac5942f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,37 +1,14 @@ import globals from "globals"; import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; import pluginReact from "eslint-plugin-react"; -import pluginNode from "eslint-plugin-n"; + +/** @type {import('eslint').Linter.Config[]} */ export default [ - // Common configuration for all files - { - files: ["**/*.{js,mjs,cjs,jsx}"], - ignores: ["node_modules/**", "server/node_modules/**", "server/node_modules/ipaddr.js"], - languageOptions: { - globals: { ...globals.browser, ...globals.node }, - }, - }, - // JavaScript recommended rules + {files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"]}, + {languageOptions: { globals: globals.browser }}, pluginJs.configs.recommended, - // React-specific rules + ...tseslint.configs.recommended, pluginReact.configs.flat.recommended, - // Node.js-specific rules - { - files: ["server/**/*.{js,mjs,cjs}"], - plugins: { n: pluginNode }, - rules: { - "react/prop-types": "off", - "n/no-unpublished-require": "off", // Example rule for Node.js - "n/no-unsupported-features/es-syntax": "off", - }, - }, - // React-specific overrides - { - files: ["client/**/*.{js,jsx}"], - rules: { - "react/react-in-jsx-scope": "off", // React 17+ doesn't require React in scope - "react/prop-types": "off", // Turn off if not using prop-types - }, - }, -]; +]; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cf40ae7..df7da75 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,16 +10,17 @@ "license": "ISC", "devDependencies": { "@babel/eslint-parser": "^7.25.9", - "@eslint/js": "^9.17.0", + "@eslint/js": "^9.18.0", "@types/node": "^22.10.7", "@types/react": "^19.0.7", "@types/react-dom": "^19.0.3", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "eslint-plugin-n": "^17.15.1", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^5.1.0", - "globals": "^15.14.0" + "globals": "^15.14.0", + "typescript-eslint": "^8.21.0" } }, "node_modules/@ampproject/remapping": { @@ -380,9 +381,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", - "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -430,9 +431,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", - "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", "dev": true, "license": "MIT", "engines": { @@ -450,12 +451,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", - "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@eslint/core": "^0.10.0", "levn": "^0.4.1" }, "engines": { @@ -620,6 +622,44 @@ "node": ">=4.0" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -664,6 +704,225 @@ "@types/react": "^19.0.0" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.21.0.tgz", + "integrity": "sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.21.0", + "@typescript-eslint/type-utils": "8.21.0", + "@typescript-eslint/utils": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.21.0.tgz", + "integrity": "sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.21.0", + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/typescript-estree": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.21.0.tgz", + "integrity": "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.21.0.tgz", + "integrity": "sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.21.0", + "@typescript-eslint/utils": "8.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.21.0.tgz", + "integrity": "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.21.0.tgz", + "integrity": "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.21.0.tgz", + "integrity": "sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.21.0", + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/typescript-estree": "8.21.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.21.0.tgz", + "integrity": "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.21.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", @@ -897,6 +1156,19 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/browserslist": { "version": "4.24.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", @@ -1448,19 +1720,19 @@ } }, "node_modules/eslint": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", - "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", + "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.17.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.1", @@ -1686,9 +1958,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", - "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1858,6 +2130,36 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1872,6 +2174,16 @@ "dev": true, "license": "MIT" }, + "node_modules/fastq": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -1885,6 +2197,19 @@ "node": ">=16.0.0" } }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2118,6 +2443,13 @@ "dev": true, "license": "ISC" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -2469,6 +2801,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-number-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", @@ -2829,6 +3171,30 @@ "node": ">= 0.4" } }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3087,6 +3453,19 @@ "license": "ISC", "peer": true }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -3129,6 +3508,27 @@ "node": ">=6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -3231,6 +3631,41 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -3591,6 +4026,32 @@ "node": ">=6" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3682,6 +4143,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.21.0.tgz", + "integrity": "sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.21.0", + "@typescript-eslint/parser": "8.21.0", + "@typescript-eslint/utils": "8.21.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", diff --git a/package.json b/package.json index c64fb78..48f369f 100644 --- a/package.json +++ b/package.json @@ -13,15 +13,16 @@ "description": "", "devDependencies": { "@babel/eslint-parser": "^7.25.9", - "@eslint/js": "^9.17.0", + "@eslint/js": "^9.18.0", "@types/node": "^22.10.7", "@types/react": "^19.0.7", "@types/react-dom": "^19.0.3", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "eslint-plugin-n": "^17.15.1", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^5.1.0", - "globals": "^15.14.0" + "globals": "^15.14.0", + "typescript-eslint": "^8.21.0" } } diff --git a/server/controllers/categoryController.js b/server/controllers/categoryController.js index 60c59df..a5eec8b 100644 --- a/server/controllers/categoryController.js +++ b/server/controllers/categoryController.js @@ -1,5 +1,5 @@ -'use strict'; -import Category from './../models/category.js'; +"use strict"; +import Category from "./../models/category.js"; const getAllCategories = async (req, res) => { try { @@ -7,8 +7,10 @@ const getAllCategories = async (req, res) => { return res.send(categories); } catch (e) { console.log(e); - return res.status(500).send({error: {message: 'Error getting categories!', code: 500}}); + return res + .status(500) + .send({ error: { message: "Error getting categories!", code: 500 } }); } }; -export {getAllCategories}; \ No newline at end of file +export { getAllCategories }; diff --git a/server/controllers/recipeController.js b/server/controllers/recipeController.js index ad7c281..d8c6c3f 100644 --- a/server/controllers/recipeController.js +++ b/server/controllers/recipeController.js @@ -1,5 +1,5 @@ -'use strict'; -import Recipe from './../models/recipe.js'; +"use strict"; +import Recipe from "./../models/recipe.js"; const getRecipes = async (req, res) => { try { @@ -7,13 +7,15 @@ const getRecipes = async (req, res) => { const recipes = await Recipe.find(); return res.send(recipes); } else { - const searchQuery = req.query['q']; - const recipes = await Recipe.find({$text: {$search: searchQuery}}); + const searchQuery = req.query["q"]; + const recipes = await Recipe.find({ $text: { $search: searchQuery } }); return res.send(recipes); } } catch (e) { console.log(e); - return res.status(500).send({error: {message: 'Error getting recipes!', code: 500}}); + return res + .status(500) + .send({ error: { message: "Error getting recipes!", code: 500 } }); } }; @@ -21,13 +23,17 @@ const getRecipe = async (req, res) => { try { const id = req.params.recipeId; if (!id) { - return res.status(400).send({error: {message: 'No recipe id provided!', code: 400}}); + return res + .status(400) + .send({ error: { message: "No recipe id provided!", code: 400 } }); } - const recipe = await Recipe.findOne({_id: id}); + const recipe = await Recipe.findOne({ _id: id }); return res.send(recipe); } catch (e) { console.log(e); - return res.status(500).send({error: {message: 'Error getting recipe!', code: 500}}); + return res + .status(500) + .send({ error: { message: "Error getting recipe!", code: 500 } }); } }; @@ -35,13 +41,17 @@ const getRecipesByCategory = async (req, res) => { try { const category = req.params.category; if (!category) { - return res.status(400).send({error: {message: 'No category provided!', code: 400}}); + return res + .status(400) + .send({ error: { message: "No category provided!", code: 400 } }); } - const recipes = await Recipe.find({category}); + const recipes = await Recipe.find({ category }); return res.send(recipes); } catch (e) { console.log(e); - return res.status(500).send({error: {message: 'Error getting recipes!', code: 500}}); + return res + .status(500) + .send({ error: { message: "Error getting recipes!", code: 500 } }); } }; @@ -51,7 +61,9 @@ const getLastAddedRecipes = async (req, res) => { return res.send(recipes); } catch (e) { console.log(e); - return res.status(500).send({error: {message: 'Error getting recipes!', code: 500}}); + return res + .status(500) + .send({ error: { message: "Error getting recipes!", code: 500 } }); } }; @@ -59,38 +71,57 @@ const postRecipe = async (req, res) => { try { const body = req.body; if (!body) { - return res.status(400).send({error: {message: 'Request body missing!', code: 400}}); + return res + .status(400) + .send({ error: { message: "Request body missing!", code: 400 } }); } const recipe = await Recipe.create(body); return res.status(201).send(recipe); } catch (e) { console.log(e); - return res.status(500).send({error: {message: 'Error creating recipe!', code: 500}}); + return res + .status(500) + .send({ error: { message: "Error creating recipe!", code: 500 } }); } }; const postReview = async (req, res) => { try { - const {rating, message} = req.body; + const { rating, message } = req.body; if (!rating && !message) { - return res.status(400).send({error: {message: 'Missing rating or review!', code: 400}}); + return res + .status(400) + .send({ error: { message: "Missing rating or review!", code: 400 } }); } const id = req.params.recipeId; if (!id) { - return res.status(400).send({error: {message: 'No recipe id provided!', code: 400}}); + return res + .status(400) + .send({ error: { message: "No recipe id provided!", code: 400 } }); } - const recipe = await Recipe.findOne({_id: id}); + const recipe = await Recipe.findOne({ _id: id }); const oldRating = recipe.rating; recipe.reviews.push(req.body); - const newRating = parseFloat(((oldRating + rating)/recipe.reviews.length).toFixed(2)); + const newRating = parseFloat( + ((oldRating + rating) / recipe.reviews.length).toFixed(2) + ); recipe.rating = newRating; await recipe.save(); return res.status(200).send(req.body); } catch (e) { console.log(e); - return res.status(500).send({error: {message: 'Error creating recipe!', code: 500}}); + return res + .status(500) + .send({ error: { message: "Error creating recipe!", code: 500 } }); } }; -export {getRecipes, getRecipe, getRecipesByCategory, getLastAddedRecipes, postRecipe, postReview}; \ No newline at end of file +export { + getRecipes, + getRecipe, + getRecipesByCategory, + getLastAddedRecipes, + postRecipe, + postReview, +}; diff --git a/server/controllers/userController.js b/server/controllers/userController.js index 2de2079..298ec34 100644 --- a/server/controllers/userController.js +++ b/server/controllers/userController.js @@ -1,70 +1,100 @@ -'use strict'; -import User from './../models/user.js'; -import bcrypt from 'bcrypt'; +"use strict"; +import User from "./../models/user.js"; +import bcrypt from "bcrypt"; const login = async (req, res) => { try { - const {email, password} = req.body; + const { email, password } = req.body; if (!email || !password) { - return res.status(401).send({error: {message: 'Missing credentials!', code: 401}}); + return res + .status(401) + .send({ error: { message: "Missing credentials!", code: 401 } }); } - const user = await User.findOne({ email }).populate('uploadedRecipes').populate('favoriteRecipes'); + const user = await User.findOne({ email }) + .populate("uploadedRecipes") + .populate("favoriteRecipes"); if (!user) { - return res.status(401).send({ error: 'Wrong credentials' }); + return res.status(401).send({ error: "Wrong credentials" }); } if (bcrypt.compareSync(password, user.password)) { return res.send(user); } else { - return res.status(401).send({ error: 'Wrong credentials' }); + return res.status(401).send({ error: "Wrong credentials" }); } } catch (e) { console.log(e); - return res.status(500).send({error: {message: 'Error getting user!', code: 500}}); + return res + .status(500) + .send({ error: { message: "Error getting user!", code: 500 } }); } }; const updateUploaded = async (req, res) => { try { - const {user, recipe} = req.body; + const { user, recipe } = req.body; if (!user) { - return res.status(400).send({error: {message: 'Missing user!', code: 400}}); + return res + .status(400) + .send({ error: { message: "Missing user!", code: 400 } }); } else if (!recipe) { - return res.status(400).send({error: {message: 'Missing recipe!', code: 400}}); + return res + .status(400) + .send({ error: { message: "Missing recipe!", code: 400 } }); } - const userDB = await User.findOne({email: user.email}); + const userDB = await User.findOne({ email: user.email }); userDB.uploadedRecipes.push(recipe); await userDB.save(); res.send(userDB); } catch (e) { console.log(e); - return res.status(500).send({error: {message: 'Error updated uploaded recipes for user!', code: 500}}); + return res + .status(500) + .send({ + error: { + message: "Error updated uploaded recipes for user!", + code: 500, + }, + }); } }; const updateFavorites = async (req, res) => { try { - const {user, recipe, favorite} = req.body; + const { user, recipe, favorite } = req.body; if (!user) { - return res.status(400).send({error: {message: 'Missing user!', code: 400}}); + return res + .status(400) + .send({ error: { message: "Missing user!", code: 400 } }); } else if (!recipe) { - return res.status(400).send({error: {message: 'Missing recipe!', code: 400}}); + return res + .status(400) + .send({ error: { message: "Missing recipe!", code: 400 } }); } - const userDB = await User.findOne({email: user.email}); + const userDB = await User.findOne({ email: user.email }); if (favorite) { userDB.favoriteRecipes.push(recipe); } else { - userDB.favoriteRecipes = userDB.favoriteRecipes.filter(favorite => favorite.toString() !== recipe._id); + userDB.favoriteRecipes = userDB.favoriteRecipes.filter( + (favorite) => favorite.toString() !== recipe._id + ); } await userDB.save(); res.send(userDB); } catch (e) { console.log(e); - return res.status(500).send({error: {message: 'Error updated uploaded recipes for user!', code: 500}}); + return res + .status(500) + .send({ + error: { + message: "Error updated uploaded recipes for user!", + code: 500, + }, + }); } }; -export { login, updateUploaded, updateFavorites }; \ No newline at end of file +export { login, updateUploaded, updateFavorites }; diff --git a/server/index.js b/server/index.js index 588066a..d332fab 100644 --- a/server/index.js +++ b/server/index.js @@ -1,16 +1,16 @@ -'use strict'; -import cors from 'cors'; -import express from 'express'; -import router from './router.js' +"use strict"; +import cors from "cors"; +import express from "express"; +import router from "./router.js"; const app = express(); const PORT = process.env.PORT || 3000; -app.use(cors({origin: 'http://localhost:5173'})); +app.use(cors({ origin: "http://localhost:5173" })); app.use(express.json()); app.use(router); app.listen(PORT, () => { console.log(`Server listening on port ${PORT} πŸ™Œβœ¨`); - console.log("") + console.log(""); }); diff --git a/server/models/category.js b/server/models/category.js index 10dbce0..12c9169 100644 --- a/server/models/category.js +++ b/server/models/category.js @@ -1,10 +1,10 @@ -import mongoose from './index.js'; +import mongoose from "./index.js"; const categorySchema = new mongoose.Schema({ - name: {type: String, required: true}, - image: {type: String, required: true}, + name: { type: String, required: true }, + image: { type: String, required: true }, }); -const Category = mongoose.model('Category', categorySchema); +const Category = mongoose.model("Category", categorySchema); -export default Category; \ No newline at end of file +export default Category; diff --git a/server/models/index.js b/server/models/index.js index d286cd6..70143fc 100644 --- a/server/models/index.js +++ b/server/models/index.js @@ -1,4 +1,4 @@ -'use strict'; +"use strict"; import mongoose from "mongoose"; (async () => { @@ -6,8 +6,8 @@ import mongoose from "mongoose"; await mongoose.connect("mongodb://127.0.0.1:27017/cooksphere"); console.log("Connected to MongoDB πŸ”Œ"); } catch (e) { - console.log(`MongoDB connection error: ${e}`) + console.log(`MongoDB connection error: ${e}`); } })(); -export default mongoose; \ No newline at end of file +export default mongoose; diff --git a/server/models/recipe.js b/server/models/recipe.js index 2feda34..507addb 100644 --- a/server/models/recipe.js +++ b/server/models/recipe.js @@ -1,18 +1,29 @@ -import mongoose from './index.js'; +import mongoose from "./index.js"; -const recipeSchema = new mongoose.Schema({ - name: {type: String, required: true}, - category: {type: String, required: true}, - // TODO area: str (needed? maybe for search) - instructions: {type: [String], required: true}, - image: {type: String, required: true}, - tags: {type: [String], required: true}, - ingredients: {type: [{ingredient: String, measure: String}], required: true}, - cookingTimeInMinutes: {type: Number, required: true}, - rating: {type: Number, default: 0}, - reviews: {type: [{author: String, message: String, rating: Number, timestamp: Date}], default: []}, -}, {timestamps: true}); +const recipeSchema = new mongoose.Schema( + { + name: { type: String, required: true }, + category: { type: String, required: true }, + // TODO area: str (needed? maybe for search) + instructions: { type: [String], required: true }, + image: { type: String, required: true }, + tags: { type: [String], required: true }, + ingredients: { + type: [{ ingredient: String, measure: String }], + required: true, + }, + cookingTimeInMinutes: { type: Number, required: true }, + rating: { type: Number, default: 0 }, + reviews: { + type: [ + { author: String, message: String, rating: Number, timestamp: Date }, + ], + default: [], + }, + }, + { timestamps: true } +); -recipeSchema.index({ name: 'text', category: 'text', tags: 'text' }); -const Recipe = mongoose.model('Recipe', recipeSchema); -export default Recipe; \ No newline at end of file +recipeSchema.index({ name: "text", category: "text", tags: "text" }); +const Recipe = mongoose.model("Recipe", recipeSchema); +export default Recipe; diff --git a/server/models/user.js b/server/models/user.js index b44ce97..cc49ae1 100644 --- a/server/models/user.js +++ b/server/models/user.js @@ -1,15 +1,24 @@ -import mongoose from './index.js'; +import mongoose from "./index.js"; -const userSchema = new mongoose.Schema({ - firstname: {type: String, required: true}, - lastname: {type: String, required: true}, - image: {type: String, required: true, default: 'man'}, - email: {type: String, required: true}, - password: {type: String, required: true}, - favoriteRecipes: {type: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Recipe' }], default: []}, - uploadedRecipes: {type: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Recipe' }], default: []}, -}, {timestamps: true}); +const userSchema = new mongoose.Schema( + { + firstname: { type: String, required: true }, + lastname: { type: String, required: true }, + image: { type: String, required: true, default: "man" }, + email: { type: String, required: true }, + password: { type: String, required: true }, + favoriteRecipes: { + type: [{ type: mongoose.Schema.Types.ObjectId, ref: "Recipe" }], + default: [], + }, + uploadedRecipes: { + type: [{ type: mongoose.Schema.Types.ObjectId, ref: "Recipe" }], + default: [], + }, + }, + { timestamps: true } +); -const User = mongoose.model('User', userSchema); +const User = mongoose.model("User", userSchema); -export default User; \ No newline at end of file +export default User; diff --git a/server/router.js b/server/router.js index cc35aeb..c1a85d8 100644 --- a/server/router.js +++ b/server/router.js @@ -1,38 +1,47 @@ -'use strict'; -import express from 'express'; -import {getAllCategories} from './controllers/categoryController.js'; -import {getRecipes, getRecipe, getRecipesByCategory, getLastAddedRecipes, postRecipe, postReview} from './controllers/recipeController.js'; -import {login, updateUploaded, updateFavorites} from './controllers/userController.js'; +"use strict"; +import express from "express"; +import { getAllCategories } from "./controllers/categoryController.js"; +import { + getRecipes, + getRecipe, + getRecipesByCategory, + getLastAddedRecipes, + postRecipe, + postReview, +} from "./controllers/recipeController.js"; +import { + login, + updateUploaded, + updateFavorites, +} from "./controllers/userController.js"; const router = express.Router(); -router.get('/recipes', getRecipes); -router.get('/recipes/latest', getLastAddedRecipes); -router.get('/recipes/:recipeId', getRecipe); -router.get('/recipes/category/:category', getRecipesByCategory); +router.get("/recipes", getRecipes); +router.get("/recipes/latest", getLastAddedRecipes); +router.get("/recipes/:recipeId", getRecipe); +router.get("/recipes/category/:category", getRecipesByCategory); -router.post('/recipe', postRecipe); -router.put('/recipes/:recipeId', postReview); +router.post("/recipe", postRecipe); +router.put("/recipes/:recipeId", postReview); -router.get('/categories', getAllCategories); +router.get("/categories", getAllCategories); -router.post('/user/authenticate', login); -router.put('/user/uploaded', updateUploaded); -router.put('/user/favorites', updateFavorites); +router.post("/user/authenticate", login); +router.put("/user/uploaded", updateUploaded); +router.put("/user/favorites", updateFavorites); - -router.get("/status" ,(req, res) => { - res.status(200).send("Server is running βœ¨πŸš€"); +router.get("/status", (req, res) => { + res.status(200).send("Server is running βœ¨πŸš€"); }); -router.post("/" ,(req, res) => { - res.status(200).json(req.body); +router.post("/", (req, res) => { + res.status(200).json(req.body); }); - router.get("/PORT", (req, res) => { - const PORT = process.env.PORT || 3000; - res.status(404).send(`Server listening on port ${PORT} πŸ™Œβœ¨`); + const PORT = process.env.PORT || 3000; + res.status(404).send(`Server listening on port ${PORT} πŸ™Œβœ¨`); }); -export default router; \ No newline at end of file +export default router; diff --git a/server/scripts/seed.js b/server/scripts/seed.js index b9ce065..aa40852 100644 --- a/server/scripts/seed.js +++ b/server/scripts/seed.js @@ -1,18 +1,48 @@ -'use strict'; +"use strict"; import bcrypt from "bcrypt"; -import mongoose from 'mongoose'; -import Category from '../models/category.js'; -import Recipe from './../models/recipe.js'; -import User from './../models/user.js'; +import mongoose from "mongoose"; +import Category from "../models/category.js"; +import Recipe from "./../models/recipe.js"; +import User from "./../models/user.js"; import { categories as categoryImages } from "../../client/src/utils/imagePaths.js"; -const BASE_URL = 'https://www.themealdb.com/api/json/v1/1'; +const BASE_URL = "https://www.themealdb.com/api/json/v1/1"; const alphabet = [ - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', - 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', - 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', - 'y', 'z', '1', '2', '3', '4', '5', '6', - '7', '8', '9' + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", ]; const recipes = []; const categories = []; @@ -22,7 +52,7 @@ const clearDatabase = async () => { await Recipe.deleteMany(); await Category.deleteMany(); await User.deleteMany(); - console.log('MongoDB cleared!'); + console.log("MongoDB cleared!"); }; const formatRecipe = (recipe) => { @@ -30,17 +60,17 @@ const formatRecipe = (recipe) => { categories.push(recipe.strCategory); } const ingredients = []; - for (let i=1; i<101; i++) { + for (let i = 1; i < 101; i++) { const ingredient = recipe[`strIngredient${i}`]; const measure = recipe[`strMeasure${i}`]; if (!ingredient && !measure) { break; - } else if (ingredient.trim() === '' && measure.trim() === '') { + } else if (ingredient.trim() === "" && measure.trim() === "") { continue; } ingredients.push({ ingredient: ingredient.trim(), - measure: measure.trim() + measure: measure.trim(), }); } @@ -48,9 +78,13 @@ const formatRecipe = (recipe) => { name: recipe.strMeal, // TODO area: recipe.strArea, category: recipe.strCategory, - instructions: recipe.strInstructions.split('\r\n').filter(instr => instr.trim() !== ''), + instructions: recipe.strInstructions + .split("\r\n") + .filter((instr) => instr.trim() !== ""), image: recipe.strMealThumb, - tags: recipe.strTags ? recipe.strTags.split(',').map(tag => tag.trim()) : [], + tags: recipe.strTags + ? recipe.strTags.split(",").map((tag) => tag.trim()) + : [], ingredients: ingredients, cookingTimeInMinutes: 45, }; @@ -61,32 +95,35 @@ const fillDatabase = async () => { const response = await fetch(`${BASE_URL}/search.php?f=${letter}`); const data = await response.json(); if (data.meals) { - data.meals.map(meal => recipes.push(meal)); + data.meals.map((meal) => recipes.push(meal)); } } - const formattedRecipes = recipes.map(recipe => formatRecipe(recipe)); + const formattedRecipes = recipes.map((recipe) => formatRecipe(recipe)); await Recipe.insertMany(formattedRecipes); - const formattedCategories = categories.map(category => ({name: category, image: `${cloudinaryUrl}${categoryImages[category]}.jpg`})); + const formattedCategories = categories.map((category) => ({ + name: category, + image: `${cloudinaryUrl}${categoryImages[category]}.jpg`, + })); await Category.insertMany(formattedCategories); const user = { - firstname: 'Zappe', - lastname: 'Thomson', - email: 'zappe.thomson@test.com', - password: 'Test123!' + firstname: "Zappe", + lastname: "Thomson", + email: "zappe.thomson@test.com", + password: "Test123!", }; const salt = await bcrypt.genSalt(10); const hashedPassword = await bcrypt.hash(user.password, salt); await User.create({ ...user, - password: hashedPassword + password: hashedPassword, }); - console.log('MongoDB filled successfully!'); + console.log("MongoDB filled successfully!"); }; (async () => { await clearDatabase(); await fillDatabase(); await mongoose.disconnect(); - console.log('Disconnected to MongoDB!'); -})(); \ No newline at end of file + console.log("Disconnected to MongoDB!"); +})(); diff --git a/server/test/server.test.js b/server/test/server.test.js index 451edff..7e09801 100644 --- a/server/test/server.test.js +++ b/server/test/server.test.js @@ -10,28 +10,23 @@ app.use(router); const PORT = process.env.PORT || 3000; const request = supertest(app); -describe("Basic SERVER test", ()=> { - - it("Should respond to GET /status πŸš€", async () => { - - const res = await request.get("/status"); - expect(res.status).equal(200); - expect(res.text).equal("Server is running βœ¨πŸš€"); - }); +describe("Basic SERVER test", () => { + it("Should respond to GET /status πŸš€", async () => { + const res = await request.get("/status"); + expect(res.status).equal(200); + expect(res.text).equal("Server is running βœ¨πŸš€"); + }); - it("Should listen server on PORT πŸ›°οΈ", async () => { - - const res = await request.get("/PORT"); - expect(res.status).equal(404); - expect(res.text).equal(`Server listening on port ${PORT} πŸ™Œβœ¨`); - }); + it("Should listen server on PORT πŸ›°οΈ", async () => { + const res = await request.get("/PORT"); + expect(res.status).equal(404); + expect(res.text).equal(`Server listening on port ${PORT} πŸ™Œβœ¨`); + }); - it("Should POST data ✨", async () => { - const data = { message: "Hello, Server!"} - const res = await request.post("/").send(data); - expect(res.status).to.equal(200); - expect(res.body).to.deep.equal(data); - }); - - -}); \ No newline at end of file + it("Should POST data ✨", async () => { + const data = { message: "Hello, Server!" }; + const res = await request.post("/").send(data); + expect(res.status).to.equal(200); + expect(res.body).to.deep.equal(data); + }); +}); From 0982799e9daf1e20ae1423554b1ee3e834696bfc Mon Sep 17 00:00:00 2001 From: J7SUS Date: Sat, 8 Feb 2025 17:07:14 +0100 Subject: [PATCH 16/16] fix: bugs --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c6be48a..9b3568f 100644 --- a/README.md +++ b/README.md @@ -117,8 +117,13 @@ Once both the frontend and the backend are running open [localhost:5173](http:// ##

Legacy Project Team

- j7sus's GitHub Avatar - lmleg9's GitHub Avatar + + + + + + + ## :)