diff --git a/apps/docs/.gitignore b/apps/docs/.gitignore
deleted file mode 100644
index f886745..0000000
--- a/apps/docs/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-.yarn/install-state.gz
-
-# testing
-/coverage
-
-# next.js
-/.next/
-/out/
-
-# production
-/build
-
-# misc
-.DS_Store
-*.pem
-
-# debug
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# env files (can opt-in for commiting if needed)
-.env*
-
-# vercel
-.vercel
-
-# typescript
-*.tsbuildinfo
-next-env.d.ts
diff --git a/apps/docs/README.md b/apps/docs/README.md
deleted file mode 100644
index a98bfa8..0000000
--- a/apps/docs/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/create-next-app).
-
-## Getting Started
-
-First, run the development server:
-
-```bash
-npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
-```
-
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-
-You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
-
-This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load Inter, a custom Google Font.
-
-## Learn More
-
-To learn more about Next.js, take a look at the following resources:
-
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
-
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
-
-## Deploy on Vercel
-
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
diff --git a/apps/docs/app/favicon.ico b/apps/docs/app/favicon.ico
deleted file mode 100644
index 718d6fe..0000000
Binary files a/apps/docs/app/favicon.ico and /dev/null differ
diff --git a/apps/docs/app/fonts/GeistMonoVF.woff b/apps/docs/app/fonts/GeistMonoVF.woff
deleted file mode 100644
index f2ae185..0000000
Binary files a/apps/docs/app/fonts/GeistMonoVF.woff and /dev/null differ
diff --git a/apps/docs/app/fonts/GeistVF.woff b/apps/docs/app/fonts/GeistVF.woff
deleted file mode 100644
index 1b62daa..0000000
Binary files a/apps/docs/app/fonts/GeistVF.woff and /dev/null differ
diff --git a/apps/docs/app/globals.css b/apps/docs/app/globals.css
deleted file mode 100644
index 6af7ecb..0000000
--- a/apps/docs/app/globals.css
+++ /dev/null
@@ -1,50 +0,0 @@
-:root {
- --background: #ffffff;
- --foreground: #171717;
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --background: #0a0a0a;
- --foreground: #ededed;
- }
-}
-
-html,
-body {
- max-width: 100vw;
- overflow-x: hidden;
-}
-
-body {
- color: var(--foreground);
- background: var(--background);
-}
-
-* {
- box-sizing: border-box;
- padding: 0;
- margin: 0;
-}
-
-a {
- color: inherit;
- text-decoration: none;
-}
-
-.imgDark {
- display: none;
-}
-
-@media (prefers-color-scheme: dark) {
- html {
- color-scheme: dark;
- }
-
- .imgLight {
- display: none;
- }
- .imgDark {
- display: unset;
- }
-}
diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx
deleted file mode 100644
index 8469537..0000000
--- a/apps/docs/app/layout.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { Metadata } from "next";
-import localFont from "next/font/local";
-import "./globals.css";
-
-const geistSans = localFont({
- src: "./fonts/GeistVF.woff",
- variable: "--font-geist-sans",
-});
-const geistMono = localFont({
- src: "./fonts/GeistMonoVF.woff",
- variable: "--font-geist-mono",
-});
-
-export const metadata: Metadata = {
- title: "Create Next App",
- description: "Generated by create next app",
-};
-
-export default function RootLayout({
- children,
-}: Readonly<{
- children: React.ReactNode;
-}>) {
- return (
-
-
- {children}
-
-
- );
-}
diff --git a/apps/docs/app/page.module.css b/apps/docs/app/page.module.css
deleted file mode 100644
index 3630662..0000000
--- a/apps/docs/app/page.module.css
+++ /dev/null
@@ -1,188 +0,0 @@
-.page {
- --gray-rgb: 0, 0, 0;
- --gray-alpha-200: rgba(var(--gray-rgb), 0.08);
- --gray-alpha-100: rgba(var(--gray-rgb), 0.05);
-
- --button-primary-hover: #383838;
- --button-secondary-hover: #f2f2f2;
-
- display: grid;
- grid-template-rows: 20px 1fr 20px;
- align-items: center;
- justify-items: center;
- min-height: 100svh;
- padding: 80px;
- gap: 64px;
- font-synthesis: none;
-}
-
-@media (prefers-color-scheme: dark) {
- .page {
- --gray-rgb: 255, 255, 255;
- --gray-alpha-200: rgba(var(--gray-rgb), 0.145);
- --gray-alpha-100: rgba(var(--gray-rgb), 0.06);
-
- --button-primary-hover: #ccc;
- --button-secondary-hover: #1a1a1a;
- }
-}
-
-.main {
- display: flex;
- flex-direction: column;
- gap: 32px;
- grid-row-start: 2;
-}
-
-.main ol {
- font-family: var(--font-geist-mono);
- padding-left: 0;
- margin: 0;
- font-size: 14px;
- line-height: 24px;
- letter-spacing: -0.01em;
- list-style-position: inside;
-}
-
-.main li:not(:last-of-type) {
- margin-bottom: 8px;
-}
-
-.main code {
- font-family: inherit;
- background: var(--gray-alpha-100);
- padding: 2px 4px;
- border-radius: 4px;
- font-weight: 600;
-}
-
-.ctas {
- display: flex;
- gap: 16px;
-}
-
-.ctas a {
- appearance: none;
- border-radius: 128px;
- height: 48px;
- padding: 0 20px;
- border: none;
- font-family: var(--font-geist-sans);
- border: 1px solid transparent;
- transition: background 0.2s, color 0.2s, border-color 0.2s;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 16px;
- line-height: 20px;
- font-weight: 500;
-}
-
-a.primary {
- background: var(--foreground);
- color: var(--background);
- gap: 8px;
-}
-
-a.secondary {
- border-color: var(--gray-alpha-200);
- min-width: 180px;
-}
-
-button.secondary {
- appearance: none;
- border-radius: 128px;
- height: 48px;
- padding: 0 20px;
- border: none;
- font-family: var(--font-geist-sans);
- border: 1px solid transparent;
- transition: background 0.2s, color 0.2s, border-color 0.2s;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 16px;
- line-height: 20px;
- font-weight: 500;
- background: transparent;
- border-color: var(--gray-alpha-200);
- min-width: 180px;
-}
-
-.footer {
- font-family: var(--font-geist-sans);
- grid-row-start: 3;
- display: flex;
- gap: 24px;
-}
-
-.footer a {
- display: flex;
- align-items: center;
- gap: 8px;
-}
-
-.footer img {
- flex-shrink: 0;
-}
-
-/* Enable hover only on non-touch devices */
-@media (hover: hover) and (pointer: fine) {
- a.primary:hover {
- background: var(--button-primary-hover);
- border-color: transparent;
- }
-
- a.secondary:hover {
- background: var(--button-secondary-hover);
- border-color: transparent;
- }
-
- .footer a:hover {
- text-decoration: underline;
- text-underline-offset: 4px;
- }
-}
-
-@media (max-width: 600px) {
- .page {
- padding: 32px;
- padding-bottom: 80px;
- }
-
- .main {
- align-items: center;
- }
-
- .main ol {
- text-align: center;
- }
-
- .ctas {
- flex-direction: column;
- }
-
- .ctas a {
- font-size: 14px;
- height: 40px;
- padding: 0 16px;
- }
-
- a.secondary {
- min-width: auto;
- }
-
- .footer {
- flex-wrap: wrap;
- align-items: center;
- justify-content: center;
- }
-}
-
-@media (prefers-color-scheme: dark) {
- .logo {
- filter: invert();
- }
-}
diff --git a/apps/docs/app/page.tsx b/apps/docs/app/page.tsx
deleted file mode 100644
index 828709a..0000000
--- a/apps/docs/app/page.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import Image, { type ImageProps } from "next/image";
-import { Button } from "@repo/ui/button";
-import styles from "./page.module.css";
-
-type Props = Omit & {
- srcLight: string;
- srcDark: string;
-};
-
-const ThemeImage = (props: Props) => {
- const { srcLight, srcDark, ...rest } = props;
-
- return (
- <>
-
-
- >
- );
-};
-
-export default function Home() {
- return (
-
-
-
-
- -
- Get started by editing
apps/docs/app/page.tsx
-
- - Save and see your changes instantly.
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/docs/eslint.config.js b/apps/docs/eslint.config.js
deleted file mode 100644
index e8759ff..0000000
--- a/apps/docs/eslint.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import { nextJsConfig } from "@repo/eslint-config/next-js";
-
-/** @type {import("eslint").Linter.Config} */
-export default nextJsConfig;
diff --git a/apps/docs/next.config.js b/apps/docs/next.config.js
deleted file mode 100644
index 4678774..0000000
--- a/apps/docs/next.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('next').NextConfig} */
-const nextConfig = {};
-
-export default nextConfig;
diff --git a/apps/docs/package.json b/apps/docs/package.json
deleted file mode 100644
index c5b4e71..0000000
--- a/apps/docs/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "docs",
- "version": "0.1.0",
- "type": "module",
- "private": true,
- "scripts": {
- "dev": "next dev --turbopack --port 3001",
- "build": "next build",
- "start": "next start",
- "lint": "next lint --max-warnings 0",
- "check-types": "tsc --noEmit"
- },
- "dependencies": {
- "@repo/ui": "workspace:*",
- "next": "^15.2.1",
- "react": "^19.0.0",
- "react-dom": "^19.0.0"
- },
- "devDependencies": {
- "@repo/eslint-config": "workspace:*",
- "@repo/typescript-config": "workspace:*",
- "@types/node": "^22.13.10",
- "@types/react": "19.0.10",
- "@types/react-dom": "19.0.4",
- "eslint": "^9.22.0",
- "typescript": "5.8.2"
- }
-}
diff --git a/apps/docs/public/file-text.svg b/apps/docs/public/file-text.svg
deleted file mode 100644
index 9cfb3c9..0000000
--- a/apps/docs/public/file-text.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/docs/public/globe.svg b/apps/docs/public/globe.svg
deleted file mode 100644
index 4230a3d..0000000
--- a/apps/docs/public/globe.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/apps/docs/public/next.svg b/apps/docs/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/apps/docs/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/docs/public/turborepo-dark.svg b/apps/docs/public/turborepo-dark.svg
deleted file mode 100644
index dae38fe..0000000
--- a/apps/docs/public/turborepo-dark.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/apps/docs/public/turborepo-light.svg b/apps/docs/public/turborepo-light.svg
deleted file mode 100644
index ddea915..0000000
--- a/apps/docs/public/turborepo-light.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/apps/docs/public/vercel.svg b/apps/docs/public/vercel.svg
deleted file mode 100644
index 0164ddc..0000000
--- a/apps/docs/public/vercel.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/apps/docs/public/window.svg b/apps/docs/public/window.svg
deleted file mode 100644
index bbc7800..0000000
--- a/apps/docs/public/window.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json
deleted file mode 100644
index 7aef056..0000000
--- a/apps/docs/tsconfig.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extends": "@repo/typescript-config/nextjs.json",
- "compilerOptions": {
- "plugins": [
- {
- "name": "next"
- }
- ]
- },
- "include": [
- "**/*.ts",
- "**/*.tsx",
- "next-env.d.ts",
- "next.config.js",
- ".next/types/**/*.ts"
- ],
- "exclude": [
- "node_modules"
- ]
-}
diff --git a/apps/ebitemp-api/.prettierrc b/apps/ebitemp-api/.prettierrc
new file mode 100644
index 0000000..4b9a2d9
--- /dev/null
+++ b/apps/ebitemp-api/.prettierrc
@@ -0,0 +1,5 @@
+{
+ "printWidth": 120,
+ "singleQuote": true,
+ "trailingComma": "all"
+}
diff --git a/apps/ebitemp-api/README.md b/apps/ebitemp-api/README.md
new file mode 100644
index 0000000..3ae04fd
--- /dev/null
+++ b/apps/ebitemp-api/README.md
@@ -0,0 +1,98 @@
+
+
+
+
+[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
+[circleci-url]: https://circleci.com/gh/nestjs/nest
+
+ A progressive Node.js framework for building efficient and scalable server-side applications.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Description
+
+[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.
+
+## Project setup
+
+```bash
+$ pnpm install
+```
+
+## Compile and run the project
+
+```bash
+# development
+$ pnpm run start
+
+# watch mode
+$ pnpm run start:dev
+
+# production mode
+$ pnpm run start:prod
+```
+
+## Run tests
+
+```bash
+# unit tests
+$ pnpm run test
+
+# e2e tests
+$ pnpm run test:e2e
+
+# test coverage
+$ pnpm run test:cov
+```
+
+## Deployment
+
+When you're ready to deploy your NestJS application to production, there are some key steps you can take to ensure it runs as efficiently as possible. Check out the [deployment documentation](https://docs.nestjs.com/deployment) for more information.
+
+If you are looking for a cloud-based platform to deploy your NestJS application, check out [Mau](https://mau.nestjs.com), our official platform for deploying NestJS applications on AWS. Mau makes deployment straightforward and fast, requiring just a few simple steps:
+
+```bash
+$ pnpm install -g mau
+$ mau deploy
+```
+
+With Mau, you can deploy your application in just a few clicks, allowing you to focus on building features rather than managing infrastructure.
+
+## Resources
+
+Check out a few resources that may come in handy when working with NestJS:
+
+- Visit the [NestJS Documentation](https://docs.nestjs.com) to learn more about the framework.
+- For questions and support, please visit our [Discord channel](https://discord.gg/G7Qnnhy).
+- To dive deeper and get more hands-on experience, check out our official video [courses](https://courses.nestjs.com/).
+- Deploy your application to AWS with the help of [NestJS Mau](https://mau.nestjs.com) in just a few clicks.
+- Visualize your application graph and interact with the NestJS application in real-time using [NestJS Devtools](https://devtools.nestjs.com).
+- Need help with your project (part-time to full-time)? Check out our official [enterprise support](https://enterprise.nestjs.com).
+- To stay in the loop and get updates, follow us on [X](https://x.com/nestframework) and [LinkedIn](https://linkedin.com/company/nestjs).
+- Looking for a job, or have a job to offer? Check out our official [Jobs board](https://jobs.nestjs.com).
+
+## Support
+
+Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
+
+## Stay in touch
+
+- Author - [Kamil Myśliwiec](https://twitter.com/kammysliwiec)
+- Website - [https://nestjs.com](https://nestjs.com/)
+- Twitter - [@nestframework](https://twitter.com/nestframework)
+
+## License
+
+Nest is [MIT licensed](https://github.com/nestjs/nest/blob/master/LICENSE).
diff --git a/apps/ebitemp-api/eslint.config.mjs b/apps/ebitemp-api/eslint.config.mjs
new file mode 100644
index 0000000..32465cc
--- /dev/null
+++ b/apps/ebitemp-api/eslint.config.mjs
@@ -0,0 +1,35 @@
+// @ts-check
+import eslint from '@eslint/js';
+import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
+import globals from 'globals';
+import tseslint from 'typescript-eslint';
+
+export default tseslint.config(
+ {
+ ignores: ['eslint.config.mjs'],
+ },
+ eslint.configs.recommended,
+ ...tseslint.configs.recommendedTypeChecked,
+ eslintPluginPrettierRecommended,
+ {
+ languageOptions: {
+ globals: {
+ ...globals.node,
+ ...globals.jest,
+ },
+ ecmaVersion: 5,
+ sourceType: 'module',
+ parserOptions: {
+ projectService: true,
+ tsconfigRootDir: import.meta.dirname,
+ },
+ },
+ },
+ {
+ rules: {
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/no-floating-promises': 'warn',
+ '@typescript-eslint/no-unsafe-argument': 'warn'
+ },
+ },
+);
\ No newline at end of file
diff --git a/apps/ebitemp-api/nest-cli.json b/apps/ebitemp-api/nest-cli.json
new file mode 100644
index 0000000..e8ab0e7
--- /dev/null
+++ b/apps/ebitemp-api/nest-cli.json
@@ -0,0 +1,9 @@
+{
+ "$schema": "https://json.schemastore.org/nest-cli",
+ "collection": "@nestjs/schematics",
+ "sourceRoot": "src",
+ "compilerOptions": {
+ "deleteOutDir": true,
+ "plugins": [{ "name": "@nestjs/swagger/plugin", "options": { "introspectComments": true } }]
+ }
+}
diff --git a/apps/ebitemp-api/package.json b/apps/ebitemp-api/package.json
new file mode 100644
index 0000000..12de96f
--- /dev/null
+++ b/apps/ebitemp-api/package.json
@@ -0,0 +1,107 @@
+{
+ "name": "ebitemp-api",
+ "private": true,
+ "scripts": {
+ "build": "nest build",
+ "format": "prettier --list-different --write \"src/**/*.ts\" \"test/**/*.ts\"",
+ "dev": "nest start --debug --watch",
+ "start:prod": "node dist/main",
+ "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
+ "test": "jest",
+ "test:watch": "jest --watch",
+ "test:cov": "jest --coverage",
+ "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
+ "test:e2e": "jest --config ./test/jest-e2e.json"
+ },
+ "dependencies": {
+ "@anatine/zod-nestjs": "^2.0.10",
+ "@anatine/zod-openapi": "^2.2.7",
+ "@autotelic/pino-seq-transport": "^0.1.0",
+ "@fastify/send": "^4.0.0",
+ "@fastify/static": "^8.1.0",
+ "@keyv/redis": "^4.2.0",
+ "@nestjs/common": "^11.0.8",
+ "@nestjs/config": "^4.0.0",
+ "@nestjs/core": "^11.0.8",
+ "@nestjs/jwt": "^11.0.0",
+ "@nestjs/passport": "^11.0.5",
+ "@nestjs/platform-express": "^11.0.8",
+ "@nestjs/platform-fastify": "^11.0.8",
+ "@nestjs/schedule": "^5.0.1",
+ "@nestjs/swagger": "^11.0.3",
+ "@nestjs/terminus": "^11.0.0",
+ "@nestjs/typeorm": "^11.0.0",
+ "@stdlib/assert": "^0.3.3",
+ "argon2": "^0.41.1",
+ "async-lock": "^1.4.1",
+ "axios": "^1.7.9",
+ "bcrypt": "^5.1.1",
+ "cacheable": "^1.8.8",
+ "connection-string": "^4.4.0",
+ "cron": "^3.5.0",
+ "dayjs": "^1.11.13",
+ "fastify": "^5.2.1",
+ "flatted": "^3.3.2",
+ "lodash": "^4.17.21",
+ "nestjs-cls": "^5.4.1",
+ "nestjs-paginate": "^11.1.1",
+ "nestjs-pino": "^4.3.0",
+ "openapi3-ts": "^4.4.0",
+ "passport-jwt": "^4.0.1",
+ "passport-local": "^1.0.0",
+ "pino-http": "^10.4.0",
+ "pino-pretty": "^13.0.0",
+ "reflect-metadata": "^0.2.2",
+ "rxjs": "^7.8.1",
+ "tozod": "^3.0.0",
+ "typeorm": "^0.3.20",
+ "typeorm-naming-strategies": "^4.1.0",
+ "typeorm-scoped": "^1.2.0",
+ "typeorm-transactional": "^0.5.0",
+ "zod": "^3.24.1"
+ },
+ "devDependencies": {
+ "@repo/eslint-config": "workspace:*",
+ "@repo/typescript-config": "workspace:*",
+ "@nestjs/schematics": "^11.0.0",
+ "@nestjs/testing": "^11.0.1",
+ "@swc/cli": "^0.6.0",
+ "@swc/core": "^1.10.7",
+ "@types/async-lock": "^1.4.2",
+ "@types/bcrypt": "^5.0.2",
+ "@types/express": "^5.0.0",
+ "@types/jest": "^29.5.14",
+ "@types/lodash": "^4.17.15",
+ "@types/node": "^22.10.7",
+ "@types/passport-jwt": "^4.0.1",
+ "@types/supertest": "^6.0.2",
+ "globals": "^16.0.0",
+ "jest": "^29.7.0",
+ "mssql": "^11.0.1",
+ "prettier": "^3.4.2",
+ "source-map-support": "^0.5.21",
+ "supertest": "^7.0.0",
+ "ts-jest": "^29.2.5",
+ "ts-loader": "^9.5.2",
+ "ts-node": "^10.9.2",
+ "tsconfig-paths": "^4.2.0",
+ "typescript": "^5.7.3"
+ },
+ "jest": {
+ "moduleFileExtensions": [
+ "js",
+ "json",
+ "ts"
+ ],
+ "rootDir": "src",
+ "testRegex": ".*\\.spec\\.ts$",
+ "transform": {
+ "^.+\\.(t|j)s$": "ts-jest"
+ },
+ "collectCoverageFrom": [
+ "**/*.(t|j)s"
+ ],
+ "coverageDirectory": "../coverage",
+ "testEnvironment": "node"
+ }
+}
diff --git a/apps/ebitemp-api/src/app.controller.spec.ts b/apps/ebitemp-api/src/app.controller.spec.ts
new file mode 100644
index 0000000..d22f389
--- /dev/null
+++ b/apps/ebitemp-api/src/app.controller.spec.ts
@@ -0,0 +1,22 @@
+import { Test, TestingModule } from '@nestjs/testing';
+import { AppController } from './app.controller';
+import { AppService } from './app.service';
+
+describe('AppController', () => {
+ let appController: AppController;
+
+ beforeEach(async () => {
+ const app: TestingModule = await Test.createTestingModule({
+ controllers: [AppController],
+ providers: [AppService],
+ }).compile();
+
+ appController = app.get(AppController);
+ });
+
+ describe('root', () => {
+ it('should return "Hello World!"', () => {
+ expect(appController.getHello()).toBe('Hello World!');
+ });
+ });
+});
diff --git a/apps/ebitemp-api/src/app.controller.ts b/apps/ebitemp-api/src/app.controller.ts
new file mode 100644
index 0000000..cce879e
--- /dev/null
+++ b/apps/ebitemp-api/src/app.controller.ts
@@ -0,0 +1,12 @@
+import { Controller, Get } from '@nestjs/common';
+import { AppService } from './app.service';
+
+@Controller()
+export class AppController {
+ constructor(private readonly appService: AppService) {}
+
+ @Get()
+ getHello(): string {
+ return this.appService.getHello();
+ }
+}
diff --git a/apps/ebitemp-api/src/app.module.ts b/apps/ebitemp-api/src/app.module.ts
new file mode 100644
index 0000000..f162ee9
--- /dev/null
+++ b/apps/ebitemp-api/src/app.module.ts
@@ -0,0 +1,37 @@
+import { Module } from '@nestjs/common';
+import { AppController } from './app.controller';
+import { AppService } from './app.service';
+
+import { AppAuthModule } from './modules/auth/auth.module';
+import { AppClsModule } from './modules/cls/cls.module';
+import { AppConfigModule } from './modules/config/config.module';
+import { AppDatabaseModule } from './modules/database/database.module';
+import { EnumifyModule } from './modules/enumify/enumify.module';
+import { AppFileTransactionsModule } from './modules/file-transactions/file-transactions.module';
+import { AppHealthModule } from './modules/health/health.module';
+import { AppLoggerModule } from './modules/logger/logger.module';
+import { AppRequestLoggingModule } from './modules/request-logging/request-logging.module';
+import { AppScheduleModule } from './modules/schedule/schedule.module';
+import { AppValidationModule } from './modules/validation/validation.module';
+
+import { AnagraficaModule } from './features/anagrafica/anagrafica.module';
+
+@Module({
+ imports: [
+ AppConfigModule,
+ AppLoggerModule,
+ AppDatabaseModule,
+ AppClsModule,
+ AppHealthModule,
+ AppFileTransactionsModule,
+ AppScheduleModule,
+ AppValidationModule,
+ AppAuthModule,
+ AppRequestLoggingModule,
+ EnumifyModule,
+ AnagraficaModule,
+ ],
+ controllers: [AppController],
+ providers: [AppService],
+})
+export class AppModule {}
diff --git a/apps/ebitemp-api/src/app.service.ts b/apps/ebitemp-api/src/app.service.ts
new file mode 100644
index 0000000..927d7cc
--- /dev/null
+++ b/apps/ebitemp-api/src/app.service.ts
@@ -0,0 +1,8 @@
+import { Injectable } from '@nestjs/common';
+
+@Injectable()
+export class AppService {
+ getHello(): string {
+ return 'Hello World!';
+ }
+}
diff --git a/apps/ebitemp-api/src/assets/.git-keep b/apps/ebitemp-api/src/assets/.git-keep
new file mode 100644
index 0000000..e69de29
diff --git a/apps/ebitemp-api/src/features/anagrafica/anagrafica.controller.spec.ts b/apps/ebitemp-api/src/features/anagrafica/anagrafica.controller.spec.ts
new file mode 100644
index 0000000..c97cbd1
--- /dev/null
+++ b/apps/ebitemp-api/src/features/anagrafica/anagrafica.controller.spec.ts
@@ -0,0 +1,20 @@
+import { Test } from '@nestjs/testing';
+import { AnagraficaController } from './anagrafica.controller';
+import { AnagraficaService } from './anagrafica.service';
+
+describe('AnagraficaController', () => {
+ let controller: AnagraficaController;
+
+ beforeEach(async () => {
+ const module = await Test.createTestingModule({
+ providers: [AnagraficaService],
+ controllers: [AnagraficaController],
+ }).compile();
+
+ controller = module.get(AnagraficaController);
+ });
+
+ it('should be defined', () => {
+ expect(controller).toBeTruthy();
+ });
+});
diff --git a/apps/ebitemp-api/src/features/anagrafica/anagrafica.controller.ts b/apps/ebitemp-api/src/features/anagrafica/anagrafica.controller.ts
new file mode 100644
index 0000000..9d08c6e
--- /dev/null
+++ b/apps/ebitemp-api/src/features/anagrafica/anagrafica.controller.ts
@@ -0,0 +1,28 @@
+import { Controller, Get, Param, UseInterceptors } from '@nestjs/common';
+import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
+import { ApiOkPaginatedResponse, ApiPaginationQuery, Paginate, type PaginateQuery } from 'nestjs-paginate';
+import { SocioEntity } from '../../modules/database/connections/oceano';
+import { AnagraficaService } from './anagrafica.service';
+import { RequestLoggerInterceptor } from '../../modules/request-logging/request-logger.interceptor';
+
+@UseInterceptors(RequestLoggerInterceptor)
+@ApiBearerAuth()
+@ApiTags('anagrafica')
+@Controller('anagrafiche')
+export class AnagraficaController {
+ constructor(private anagraficaService: AnagraficaService) {}
+
+ @Get()
+ @ApiOperation({ summary: 'Find all Anagrafiche' })
+ @ApiPaginationQuery(AnagraficaService.findPaginateConfig())
+ @ApiOkPaginatedResponse(SocioEntity, AnagraficaService.findPaginateConfig())
+ async getAnagrafiche(@Paginate() query: PaginateQuery) {
+ return this.anagraficaService.getAnagrafiche(query);
+ }
+
+ @Get('id/:id')
+ @ApiOperation({ summary: 'Get one Anagrafica by id' })
+ async getOneAnagraficaById(@Param('id') id: string) {
+ return this.anagraficaService.getOneAnagraficaById(id);
+ }
+}
diff --git a/apps/ebitemp-api/src/features/anagrafica/anagrafica.module.ts b/apps/ebitemp-api/src/features/anagrafica/anagrafica.module.ts
new file mode 100644
index 0000000..58bd7bc
--- /dev/null
+++ b/apps/ebitemp-api/src/features/anagrafica/anagrafica.module.ts
@@ -0,0 +1,14 @@
+import { Module } from '@nestjs/common';
+import { TypeOrmModule } from '@nestjs/typeorm';
+import { SocioEntity } from '../../modules/database/connections/oceano';
+import { OCEANO_DATASOURCE } from '../../modules/database/connections/oceano/database.constants';
+import { AnagraficaController } from './anagrafica.controller';
+import { AnagraficaService } from './anagrafica.service';
+
+@Module({
+ imports: [TypeOrmModule.forFeature([SocioEntity], OCEANO_DATASOURCE)],
+ controllers: [AnagraficaController],
+ providers: [AnagraficaService],
+ exports: [AnagraficaService],
+})
+export class AnagraficaModule {}
diff --git a/apps/ebitemp-api/src/features/anagrafica/anagrafica.service.spec.ts b/apps/ebitemp-api/src/features/anagrafica/anagrafica.service.spec.ts
new file mode 100644
index 0000000..bc42cd0
--- /dev/null
+++ b/apps/ebitemp-api/src/features/anagrafica/anagrafica.service.spec.ts
@@ -0,0 +1,18 @@
+import { Test } from '@nestjs/testing';
+import { AnagraficaService } from './anagrafica.service';
+
+describe('AnagraficaService', () => {
+ let service: AnagraficaService;
+
+ beforeEach(async () => {
+ const module = await Test.createTestingModule({
+ providers: [AnagraficaService],
+ }).compile();
+
+ service = module.get(AnagraficaService);
+ });
+
+ it('should be defined', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/apps/ebitemp-api/src/features/anagrafica/anagrafica.service.ts b/apps/ebitemp-api/src/features/anagrafica/anagrafica.service.ts
new file mode 100644
index 0000000..f28a964
--- /dev/null
+++ b/apps/ebitemp-api/src/features/anagrafica/anagrafica.service.ts
@@ -0,0 +1,46 @@
+import { Injectable, Logger } from '@nestjs/common';
+import { InjectRepository } from '@nestjs/typeorm';
+import { paginate, PaginateConfig, PaginateQuery } from 'nestjs-paginate';
+import { Repository } from 'typeorm';
+import { SocioEntity } from '../../modules/database/connections/oceano';
+import { OCEANO_DATASOURCE } from '../../modules/database/connections/oceano/database.constants';
+
+@Injectable()
+export class AnagraficaService {
+ private readonly logger = new Logger(AnagraficaService.name);
+
+ static readonly findPaginateConfig = (): PaginateConfig => ({
+ relations: {},
+ sortableColumns: ['codiceSocio', 'idNucleo', 'idPersona'],
+ searchableColumns: [],
+ defaultSortBy: [['codiceSocio', 'ASC']],
+ defaultLimit: 50,
+ maxLimit: -1,
+ filterableColumns: {},
+ relativePath: true,
+ where: {
+ codiceGruppo: '6',
+ },
+ });
+
+ constructor(
+ @InjectRepository(SocioEntity, OCEANO_DATASOURCE)
+ private readonly sociRepository: Repository,
+ ) {}
+
+ async getAnagrafiche(query: PaginateQuery) {
+ const config = AnagraficaService.findPaginateConfig();
+ query.limit ??= -1;
+
+ return await paginate(query, this.sociRepository, config);
+ }
+
+ async getOneAnagraficaById(idAnagrafica: string) {
+ return await this.sociRepository.findOne({
+ where: {
+ ...AnagraficaService.findPaginateConfig().where,
+ codiceSocio: idAnagrafica,
+ },
+ });
+ }
+}
diff --git a/apps/ebitemp-api/src/main.ts b/apps/ebitemp-api/src/main.ts
new file mode 100644
index 0000000..a7285cd
--- /dev/null
+++ b/apps/ebitemp-api/src/main.ts
@@ -0,0 +1,61 @@
+import { Logger, VersioningType } from '@nestjs/common';
+import { NestFactory } from '@nestjs/core';
+import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify';
+import { Logger as PinoLogger } from 'nestjs-pino';
+
+import { DocumentBuilder, SwaggerDocumentOptions, SwaggerModule } from '@nestjs/swagger';
+import { flow } from 'lodash';
+import { AppModule } from './app.module';
+import { patchPublicDecoratorSupport } from './modules/auth/strategies/jwt/jwt-auth.guard';
+import { LocalConfig, localConfig } from './modules/config/local.config';
+import { patchTypeOrm } from './modules/database/utils/typeorm-patch';
+import { patchNestjsSwagger } from './modules/validation/utils/nestjs-swagger-patches';
+
+async function bootstrap() {
+ await patchTypeOrm();
+ await patchNestjsSwagger();
+
+ const appOpts = (() => {
+ const loggerOpts = { bufferLogs: true };
+ return {
+ forceCloseConnections: true,
+ ...loggerOpts,
+ };
+ })();
+ const app = await NestFactory.create(AppModule, new FastifyAdapter(appOpts));
+ app.enableVersioning({
+ type: VersioningType.URI,
+ defaultVersion: '1',
+ });
+ app.enableShutdownHooks();
+
+ const config = app.get(localConfig.KEY);
+ const port = config.port || 3000;
+
+ app.useLogger(app.get(PinoLogger));
+
+ const swaggerConfig = new DocumentBuilder().addBearerAuth().build();
+ const swaggerOptions = {
+ operationIdFactory: (controllerKey: string, methodKey: string) => {
+ return `${controllerKey}_${methodKey}`;
+ },
+ } satisfies SwaggerDocumentOptions;
+ const document = flow(
+ () => SwaggerModule.createDocument(app, swaggerConfig, swaggerOptions),
+ patchPublicDecoratorSupport,
+ )();
+
+ SwaggerModule.setup(`docs`, app, document, {
+ swaggerOptions: {
+ operationsSorter: 'alpha',
+ displayOperationId: true,
+ filter: true,
+ persistAuthorization: true,
+ },
+ });
+
+ await app.listen(port);
+ Logger.log(`🚀 Application is running on: http://localhost:${port}`);
+}
+
+void bootstrap();
diff --git a/apps/ebitemp-api/src/modules/auth/auth.config.ts b/apps/ebitemp-api/src/modules/auth/auth.config.ts
new file mode 100644
index 0000000..c335a88
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/auth.config.ts
@@ -0,0 +1,31 @@
+import { registerAs } from '@nestjs/config';
+import { z } from 'zod';
+import coerceRecordTypes from '../config/utils/coerce-record-types';
+
+export const authSchema = z.object({
+ accessToken: z.object({
+ secret: z.string(),
+ expTimeInSecs: z.number().finite().nonnegative(),
+ }),
+ refreshToken: z.object({
+ secret: z.string(),
+ expTimeInSecs: z.number().finite().nonnegative(),
+ }),
+});
+export type AuthConfig = z.infer;
+
+export const authConfig = registerAs('auth', () => {
+ const env = coerceRecordTypes(process.env);
+
+ const config: AuthConfig = authSchema.strict().parse({
+ accessToken: {
+ secret: env['JWT_ACCESS_TOKEN_SECRET'],
+ expTimeInSecs: env['JWT_ACCESS_TOKEN_EXPIRATION_TIME_IN_SECONDS'],
+ },
+ refreshToken: {
+ secret: env['JWT_REFRESH_TOKEN_SECRET'],
+ expTimeInSecs: env['JWT_REFRESH_TOKEN_EXPIRATION_TIME_IN_SECONDS'],
+ },
+ });
+ return config;
+});
diff --git a/apps/ebitemp-api/src/modules/auth/auth.controller.ts b/apps/ebitemp-api/src/modules/auth/auth.controller.ts
new file mode 100644
index 0000000..17d2956
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/auth.controller.ts
@@ -0,0 +1,31 @@
+import { Body, Controller, HttpCode, HttpStatus, Post, UseGuards } from '@nestjs/common';
+import { ApiBearerAuth } from '@nestjs/swagger';
+import { AccountsEntity } from '../database/connections/ebitemp-api/entities';
+import { LoginDto, LoginResDto } from './auth.dto';
+import { AuthService } from './auth.service';
+import { AuthenticatedUser } from './authenticated-user.decorator';
+import { Public } from './strategies/jwt/jwt-auth.guard';
+import { JwtRefreshGuard } from './strategies/jwt/jwt-refresh.guard';
+
+@ApiBearerAuth()
+@Controller('auth')
+export class AuthController {
+ constructor(private readonly authService: AuthService) {}
+
+ @HttpCode(HttpStatus.OK)
+ @Public()
+ @Post('login')
+ async logIn(@Body() body: LoginDto): Promise {
+ const { username, password } = body;
+ const user = await this.authService.getAuthenticatedUser(username, password);
+ return await this.authService.signJwts(user);
+ }
+
+ @HttpCode(HttpStatus.OK)
+ @UseGuards(JwtRefreshGuard)
+ @Public(true)
+ @Post('refresh')
+ async refresh(@AuthenticatedUser() user: AccountsEntity): Promise {
+ return await this.authService.signJwts(user);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/auth/auth.dto.ts b/apps/ebitemp-api/src/modules/auth/auth.dto.ts
new file mode 100644
index 0000000..6447506
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/auth.dto.ts
@@ -0,0 +1,19 @@
+import { createZodDto } from '@anatine/zod-nestjs';
+import { z } from 'zod';
+import { AccountsEntitySchema } from '../database/connections/ebitemp-api/entities';
+
+export const loginSchema = z.object({
+ username: AccountsEntitySchema.shape.username,
+ password: z.string().nonempty(),
+});
+export type Login = z.infer;
+export class LoginDto extends createZodDto(loginSchema) {}
+
+export const loginResSchema = z.object({
+ accessToken: z.string().jwt(),
+ accessTokenExp: z.string().datetime(),
+ refreshToken: z.string().jwt(),
+ refreshTokenExp: z.string().datetime(),
+});
+export type LoginRes = z.infer;
+export class LoginResDto extends createZodDto(loginResSchema) {}
diff --git a/apps/ebitemp-api/src/modules/auth/auth.module.ts b/apps/ebitemp-api/src/modules/auth/auth.module.ts
new file mode 100644
index 0000000..9781318
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/auth.module.ts
@@ -0,0 +1,36 @@
+import { Module } from '@nestjs/common';
+import { APP_GUARD, Reflector } from '@nestjs/core';
+import { PassportModule } from '@nestjs/passport';
+import { TypeOrmModule } from '@nestjs/typeorm';
+import { AccountsEntity } from '../database/connections/ebitemp-api/entities';
+import { AuthController } from './auth.controller';
+import { AuthService } from './auth.service';
+import { JwtAccessTokenAuthStrategy } from './strategies/jwt/jwt-access-token-auth.strategy';
+import { JwtAccessTokenModule } from './strategies/jwt/jwt-access-token.module';
+import { JwtAuthGuard } from './strategies/jwt/jwt-auth.guard';
+import { JwtRefreshTokenAuthStrategy } from './strategies/jwt/jwt-refresh-token-auth.strategy';
+import { JwtRefreshTokenModule } from './strategies/jwt/jwt-refresh-token.module';
+import { UsersAuthModule } from './users/users.module';
+import { EBITEMP_API_DATASOURCE } from '../database/connections/ebitemp-api/database.constants';
+
+@Module({
+ imports: [
+ TypeOrmModule.forFeature([AccountsEntity], EBITEMP_API_DATASOURCE),
+ JwtAccessTokenModule,
+ JwtRefreshTokenModule,
+ PassportModule,
+ UsersAuthModule,
+ ],
+ controllers: [AuthController],
+ providers: [
+ {
+ provide: APP_GUARD,
+ useFactory: (reflector) => new JwtAuthGuard(reflector),
+ inject: [Reflector],
+ },
+ AuthService,
+ JwtAccessTokenAuthStrategy,
+ JwtRefreshTokenAuthStrategy,
+ ],
+})
+export class AppAuthModule {}
diff --git a/apps/ebitemp-api/src/modules/auth/auth.service.ts b/apps/ebitemp-api/src/modules/auth/auth.service.ts
new file mode 100644
index 0000000..d4740a3
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/auth.service.ts
@@ -0,0 +1,75 @@
+import { Inject, Injectable, Logger, UnauthorizedException } from '@nestjs/common';
+import { JwtService, JwtSignOptions } from '@nestjs/jwt';
+import * as bcrypt from 'bcrypt';
+import dayjs from 'dayjs';
+import { isEmpty } from 'lodash';
+import { AccountsEntity } from '../database/connections/ebitemp-api/entities';
+import { TokenPayload } from './constants/token-payload.interface';
+import { ACCESS_TOKEN_JWT_SERVICE } from './strategies/jwt/jwt-access-token.module';
+import { REFRESH_TOKEN_JWT_SERVICE } from './strategies/jwt/jwt-refresh-token.module';
+import { UsersAuthService } from './users/users-auth.service';
+
+@Injectable()
+export class AuthService {
+ private readonly logger = new Logger(AuthService.name);
+
+ constructor(
+ private readonly usersAuthService: UsersAuthService,
+ @Inject(ACCESS_TOKEN_JWT_SERVICE)
+ private readonly accessTokenJwtService: JwtService,
+ @Inject(REFRESH_TOKEN_JWT_SERVICE)
+ private readonly refreshTokenJwtService: JwtService,
+ ) {}
+
+ public async signJwts(account: AccountsEntity) {
+ const { token: accessToken, exp: accessTokenExp } = await this.getAccessToken(account);
+ const { token: refreshToken, exp: refreshTokenExp } = await this.getRefreshToken(account);
+
+ return {
+ accessToken: accessToken,
+ accessTokenExp: dayjs.unix(accessTokenExp).toJSON(),
+ refreshToken: refreshToken,
+ refreshTokenExp: dayjs.unix(refreshTokenExp).toJSON(),
+ };
+ }
+
+ public async getAccessToken(account: AccountsEntity, options?: JwtSignOptions) {
+ const payload: TokenPayload = {
+ username: account.username,
+ sub: account.id,
+ };
+ const token = await this.accessTokenJwtService.signAsync(payload, options);
+ const exp = this.accessTokenJwtService.decode<{ exp: number }>(token).exp;
+ return { token, exp };
+ }
+
+ public async getRefreshToken(account: AccountsEntity, options?: JwtSignOptions) {
+ const payload: TokenPayload = {
+ username: account.username,
+ sub: account.id,
+ };
+ const token = await this.refreshTokenJwtService.signAsync(payload, options);
+ await this.usersAuthService.setCurrentRefreshTokenHash(account.id, token);
+ const exp = this.refreshTokenJwtService.decode<{ exp: number }>(token).exp;
+ return { token, exp };
+ }
+
+ public async getAuthenticatedUser(username: string, password: string): Promise {
+ try {
+ const account = await this.usersAuthService.getUserByUsername(username);
+ if (!account) throw new UnauthorizedException(`Username not found`);
+ await this.verifyPassword(password, account.password);
+ return account;
+ } catch (error) {
+ throw new UnauthorizedException(`Wrong credentials`);
+ }
+ }
+
+ private async verifyPassword(plainTextPassword: string, hashedPassword: string | null) {
+ const isPasswordMatching =
+ hashedPassword && !isEmpty(hashedPassword) ? await bcrypt.compare(plainTextPassword, hashedPassword) : null;
+ if (!isPasswordMatching) {
+ throw new UnauthorizedException(`Wrong password`);
+ }
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/auth/authenticated-user.decorator.ts b/apps/ebitemp-api/src/modules/auth/authenticated-user.decorator.ts
new file mode 100644
index 0000000..89a950d
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/authenticated-user.decorator.ts
@@ -0,0 +1,8 @@
+import { createParamDecorator, ExecutionContext } from '@nestjs/common';
+import { RequestWithUser } from './constants/request-with-user';
+
+export const AuthenticatedUser = createParamDecorator((data: unknown, ctx: ExecutionContext) => {
+ const request = ctx.switchToHttp().getRequest();
+
+ return request.user;
+});
diff --git a/apps/ebitemp-api/src/modules/auth/constants/request-with-user.ts b/apps/ebitemp-api/src/modules/auth/constants/request-with-user.ts
new file mode 100644
index 0000000..f5e0ffc
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/constants/request-with-user.ts
@@ -0,0 +1,6 @@
+import { FastifyRequest } from 'fastify';
+import { AccountsEntity } from '../../database/connections/ebitemp-api/entities';
+
+export interface RequestWithUser extends FastifyRequest {
+ user: AccountsEntity;
+}
diff --git a/apps/ebitemp-api/src/modules/auth/constants/token-payload.interface.ts b/apps/ebitemp-api/src/modules/auth/constants/token-payload.interface.ts
new file mode 100644
index 0000000..1e0843c
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/constants/token-payload.interface.ts
@@ -0,0 +1,6 @@
+export interface TokenPayload {
+ username: string;
+ sub: number;
+ iat?: number;
+ exp?: number;
+}
diff --git a/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-access-token-auth.strategy.ts b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-access-token-auth.strategy.ts
new file mode 100644
index 0000000..0991c44
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-access-token-auth.strategy.ts
@@ -0,0 +1,31 @@
+import { Inject, Injectable, UnauthorizedException } from '@nestjs/common';
+import { PassportStrategy } from '@nestjs/passport';
+import { FastifyRequest } from 'fastify';
+import { ClsService } from 'nestjs-cls';
+import { ExtractJwt, Strategy } from 'passport-jwt';
+import { AppClsStore } from '../../../cls/cls.interface';
+import { type AuthConfig, authConfig } from '../../auth.config';
+import { TokenPayload } from '../../constants/token-payload.interface';
+import { UsersAuthService } from '../../users/users-auth.service';
+
+@Injectable()
+export class JwtAccessTokenAuthStrategy extends PassportStrategy(Strategy, 'jwt-access-token') {
+ constructor(
+ @Inject(authConfig.KEY) authConfig: AuthConfig,
+ private readonly cls: ClsService,
+ private readonly userAuthService: UsersAuthService,
+ ) {
+ super({
+ jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
+ secretOrKey: authConfig.accessToken.secret,
+ passReqToCallback: true,
+ });
+ }
+
+ async validate(request: FastifyRequest, payload: TokenPayload) {
+ const account = await this.userAuthService.getUserById(payload.sub);
+ if (!account) throw new UnauthorizedException('Access Token Guard');
+ this.cls.set('account', account);
+ return account;
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-access-token.module.ts b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-access-token.module.ts
new file mode 100644
index 0000000..a96f1f4
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-access-token.module.ts
@@ -0,0 +1,30 @@
+import { Module } from '@nestjs/common';
+import { JwtService, JwtModule as NestJwtModule } from '@nestjs/jwt';
+import { authConfig, AuthConfig } from '../../auth.config';
+import { ConfigModule } from '@nestjs/config';
+
+export const ACCESS_TOKEN_JWT_SERVICE = Symbol('ACCESS_TOKEN_JWT_SERVICE');
+const accessTokenJwtProvider = {
+ provide: ACCESS_TOKEN_JWT_SERVICE,
+ useFactory: (jwtService: JwtService) => jwtService,
+ inject: [JwtService],
+};
+
+@Module({
+ imports: [
+ ConfigModule.forFeature(authConfig),
+ NestJwtModule.registerAsync({
+ imports: [...authConfig.asProvider().imports],
+ useFactory: async (authConfig: AuthConfig) => ({
+ secret: authConfig.accessToken.secret,
+ signOptions: {
+ expiresIn: `${authConfig.accessToken.expTimeInSecs}s`,
+ },
+ }),
+ inject: [authConfig.KEY],
+ }),
+ ],
+ providers: [accessTokenJwtProvider],
+ exports: [ConfigModule, accessTokenJwtProvider],
+})
+export class JwtAccessTokenModule {}
diff --git a/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-auth.guard.ts b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-auth.guard.ts
new file mode 100644
index 0000000..c4b064d
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-auth.guard.ts
@@ -0,0 +1,39 @@
+import { applyDecorators, ExecutionContext, SetMetadata } from '@nestjs/common';
+import { Reflector } from '@nestjs/core';
+import { AuthGuard } from '@nestjs/passport';
+import { OpenAPIObject } from '@nestjs/swagger';
+
+export const IS_PUBLIC_KEY = 'isPublic';
+export const Public = (keepSecurity: boolean = false) => {
+ const decorators = [SetMetadata(IS_PUBLIC_KEY, true)];
+ if (!keepSecurity) decorators.push(SetMetadata('swagger/apiSecurity', ['public']));
+ return applyDecorators(...decorators);
+};
+
+export const patchPublicDecoratorSupport = (document: OpenAPIObject) => {
+ Object.values(document.paths).forEach((path: any) => {
+ Object.values(path).forEach((method: any) => {
+ if (Array.isArray(method.security) && method.security.includes('public')) {
+ method.security = [];
+ }
+ });
+ });
+ return document;
+};
+
+export class JwtAuthGuard extends AuthGuard('jwt-access-token') {
+ constructor(private reflector: Reflector) {
+ super();
+ }
+
+ canActivate(context: ExecutionContext) {
+ const isPublic = this.reflector.getAllAndOverride(IS_PUBLIC_KEY, [
+ context.getHandler(),
+ context.getClass(),
+ ]);
+ if (isPublic) {
+ return true;
+ }
+ return super.canActivate(context);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-refresh-token-auth.strategy.ts b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-refresh-token-auth.strategy.ts
new file mode 100644
index 0000000..e5659be
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-refresh-token-auth.strategy.ts
@@ -0,0 +1,32 @@
+import { Inject, Injectable, UnauthorizedException } from '@nestjs/common';
+import { PassportStrategy } from '@nestjs/passport';
+import { FastifyRequest } from 'fastify';
+import { ClsService } from 'nestjs-cls';
+import { ExtractJwt, Strategy } from 'passport-jwt';
+import { AppClsStore } from '../../../cls/cls.interface';
+import { authConfig, type AuthConfig } from '../../auth.config';
+import { TokenPayload } from '../../constants/token-payload.interface';
+import { UsersAuthService } from '../../users/users-auth.service';
+
+@Injectable()
+export class JwtRefreshTokenAuthStrategy extends PassportStrategy(Strategy, 'jwt-refresh-token') {
+ constructor(
+ @Inject(authConfig.KEY) authConfig: AuthConfig,
+ private readonly cls: ClsService,
+ private readonly usersAuthService: UsersAuthService,
+ ) {
+ super({
+ jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
+ secretOrKey: authConfig.refreshToken.secret,
+ passReqToCallback: true,
+ });
+ }
+
+ async validate(request: FastifyRequest, payload: TokenPayload) {
+ const refreshToken = request.headers?.authorization?.replace('Bearer', '')?.trim() ?? '';
+ const account = await this.usersAuthService.getUserByIdAndRefreshTokenPair(payload.sub, refreshToken);
+ if (!account) throw new UnauthorizedException('Refresh Token Guard');
+ this.cls.set('account', account);
+ return account;
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-refresh-token.module.ts b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-refresh-token.module.ts
new file mode 100644
index 0000000..6424afe
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-refresh-token.module.ts
@@ -0,0 +1,30 @@
+import { Module } from '@nestjs/common';
+import { ConfigModule } from '@nestjs/config';
+import { JwtService, JwtModule as NestJwtModule } from '@nestjs/jwt';
+import { authConfig, AuthConfig } from '../../auth.config';
+
+export const REFRESH_TOKEN_JWT_SERVICE = Symbol('REFRESH_TOKEN_JWT_SERVICE');
+const refreshTokenJwtProvider = {
+ provide: REFRESH_TOKEN_JWT_SERVICE,
+ useFactory: (jwtService: JwtService) => jwtService,
+ inject: [JwtService],
+};
+
+@Module({
+ imports: [
+ ConfigModule.forFeature(authConfig),
+ NestJwtModule.registerAsync({
+ imports: [...authConfig.asProvider().imports],
+ useFactory: async (authConfig: AuthConfig) => ({
+ secret: authConfig.refreshToken.secret,
+ signOptions: {
+ expiresIn: `${authConfig.refreshToken.expTimeInSecs}s`,
+ },
+ }),
+ inject: [authConfig.KEY],
+ }),
+ ],
+ providers: [refreshTokenJwtProvider],
+ exports: [ConfigModule, refreshTokenJwtProvider],
+})
+export class JwtRefreshTokenModule {}
diff --git a/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-refresh.guard.ts b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-refresh.guard.ts
new file mode 100644
index 0000000..9ea7bce
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/strategies/jwt/jwt-refresh.guard.ts
@@ -0,0 +1,3 @@
+import { AuthGuard } from '@nestjs/passport';
+
+export class JwtRefreshGuard extends AuthGuard('jwt-refresh-token') {}
diff --git a/apps/ebitemp-api/src/modules/auth/users/users-auth.service.ts b/apps/ebitemp-api/src/modules/auth/users/users-auth.service.ts
new file mode 100644
index 0000000..25f668b
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/users/users-auth.service.ts
@@ -0,0 +1,43 @@
+import { Injectable } from '@nestjs/common';
+import { InjectRepository } from '@nestjs/typeorm';
+import * as argon2 from 'argon2';
+import { Repository } from 'typeorm';
+import { AccountsEntity } from '../../database/connections/ebitemp-api/entities';
+import { EBITEMP_API_DATASOURCE } from '../../database/connections/ebitemp-api/database.constants';
+
+@Injectable()
+export class UsersAuthService {
+ constructor(
+ @InjectRepository(AccountsEntity, EBITEMP_API_DATASOURCE)
+ private readonly accountsRepository: Repository,
+ ) {}
+
+ async getUserById(accountId: number) {
+ return await this.accountsRepository.findOne({
+ relations: { profili: { ruolo: true } },
+ where: { id: accountId },
+ });
+ }
+
+ async getUserByUsername(username: string) {
+ return await this.accountsRepository.findOne({
+ relations: { profili: { ruolo: true } },
+ where: { username: username },
+ });
+ }
+
+ async getUserByIdAndRefreshTokenPair(accountId: number, refreshToken: string) {
+ const accountById = await this.getUserById(accountId);
+ if (!accountById?.ultimoHashRefreshToken) return null;
+
+ const isRefreshTokenMatching = await argon2.verify(accountById.ultimoHashRefreshToken, refreshToken);
+ return isRefreshTokenMatching ? accountById : null;
+ }
+
+ async setCurrentRefreshTokenHash(accountId: number, refreshToken: string | null) {
+ const hash = refreshToken ? await argon2.hash(refreshToken) : null;
+ await this.accountsRepository.update(accountId, {
+ ultimoHashRefreshToken: hash,
+ });
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/auth/users/users.module.ts b/apps/ebitemp-api/src/modules/auth/users/users.module.ts
new file mode 100644
index 0000000..fa769cf
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/auth/users/users.module.ts
@@ -0,0 +1,13 @@
+import { Module } from '@nestjs/common';
+import { TypeOrmModule } from '@nestjs/typeorm';
+import { UsersAuthService } from './users-auth.service';
+import { AccountsEntity } from '../../database/connections/ebitemp-api/entities';
+import { EBITEMP_API_DATASOURCE } from '../../database/connections/ebitemp-api/database.constants';
+
+@Module({
+ imports: [TypeOrmModule.forFeature([AccountsEntity], EBITEMP_API_DATASOURCE)],
+ controllers: [],
+ providers: [UsersAuthService],
+ exports: [UsersAuthService],
+})
+export class UsersAuthModule {}
diff --git a/apps/ebitemp-api/src/modules/cls/cls.interface.ts b/apps/ebitemp-api/src/modules/cls/cls.interface.ts
new file mode 100644
index 0000000..34cf783
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/cls/cls.interface.ts
@@ -0,0 +1,6 @@
+import { ClsStore } from 'nestjs-cls';
+import { AccountsEntity } from '../database/connections/ebitemp-api';
+
+export interface AppClsStore extends ClsStore {
+ account: AccountsEntity | null;
+}
diff --git a/apps/ebitemp-api/src/modules/cls/cls.module.ts b/apps/ebitemp-api/src/modules/cls/cls.module.ts
new file mode 100644
index 0000000..d4139bc
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/cls/cls.module.ts
@@ -0,0 +1,16 @@
+import { Module } from '@nestjs/common';
+import { ClsModule } from 'nestjs-cls';
+
+@Module({
+ imports: [
+ ClsModule.forRoot({
+ global: true,
+ middleware: {
+ mount: true,
+ },
+ }),
+ ],
+ providers: [],
+ exports: [ClsModule],
+})
+export class AppClsModule {}
diff --git a/apps/ebitemp-api/src/modules/config/config.module.ts b/apps/ebitemp-api/src/modules/config/config.module.ts
new file mode 100644
index 0000000..e4325bd
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/config/config.module.ts
@@ -0,0 +1,14 @@
+import { Module } from '@nestjs/common';
+import { ConfigModule } from '@nestjs/config';
+import { localConfig } from './local.config';
+
+@Module({
+ imports: [
+ ConfigModule.forRoot({
+ isGlobal: true,
+ envFilePath: ['.env', '../../.env'],
+ load: [localConfig],
+ }),
+ ],
+})
+export class AppConfigModule {}
diff --git a/apps/ebitemp-api/src/modules/config/local.config.ts b/apps/ebitemp-api/src/modules/config/local.config.ts
new file mode 100644
index 0000000..9ab7cb9
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/config/local.config.ts
@@ -0,0 +1,19 @@
+import coerceRecordTypes from './utils/coerce-record-types';
+import { registerAs } from '@nestjs/config';
+import { z } from 'zod';
+
+export const localSchema = z.object({
+ production: z.boolean(),
+ port: z.number().optional(),
+});
+export type LocalConfig = z.infer;
+
+export const localConfig = registerAs('local', () => {
+ const env = coerceRecordTypes(process.env);
+
+ const config: LocalConfig = localSchema.strict().parse({
+ production: env['PRODUCTION'],
+ port: env['PORT'],
+ });
+ return config;
+});
diff --git a/apps/ebitemp-api/src/modules/config/utils/coerce-record-types.ts b/apps/ebitemp-api/src/modules/config/utils/coerce-record-types.ts
new file mode 100644
index 0000000..7a63ba9
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/config/utils/coerce-record-types.ts
@@ -0,0 +1,11 @@
+import { clone, each } from 'lodash';
+
+export default (raw: Record): Record => {
+ raw = clone(raw);
+ return each(raw, (value, key) => {
+ if (value === 'true') raw[key] = true;
+ if (value === 'false') raw[key] = false;
+ if (value === 'null') raw[key] = null;
+ if (!isNaN(Number(value))) raw[key] = Number(value);
+ });
+};
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/database.config.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/database.config.ts
new file mode 100644
index 0000000..ad5dcc9
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/database.config.ts
@@ -0,0 +1,10 @@
+import coerceRecordTypes from '../../../config/utils/coerce-record-types';
+import { databaseConfigFactory, rawDatabaseSchema } from '../../utils/database-config';
+
+const env = coerceRecordTypes(process.env);
+const envParsed = rawDatabaseSchema.strict().parse({
+ connectionString: env['DATABASE_EBITEMPAPI_CONNECTION_STRING'],
+ secure: env['DATABASE_EBITEMPAPI_SECURE'],
+});
+
+export const databaseConfig = databaseConfigFactory(envParsed);
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/database.constants.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/database.constants.ts
new file mode 100644
index 0000000..59d8cfe
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/database.constants.ts
@@ -0,0 +1 @@
+export const EBITEMP_API_DATASOURCE = 'EbitempApi';
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/database.module.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/database.module.ts
new file mode 100644
index 0000000..029b7f7
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/database.module.ts
@@ -0,0 +1,32 @@
+import { Module } from '@nestjs/common';
+import { ConfigModule } from '@nestjs/config';
+import { TypeOrmModule } from '@nestjs/typeorm';
+import { DatabaseConfig } from '../../utils/database-config';
+import { typeormTransactionalDataSourceFactory } from '../../utils/typeorm-data-source-factory';
+import { typeormEntitiesFromImport } from '../../utils/typeorm-import-entities';
+import { typeormModuleOptionsFactory } from '../../utils/typeorm-module-options-factory';
+import { databaseConfig } from './database.config';
+import { EBITEMP_API_DATASOURCE } from './database.constants';
+
+@Module({
+ imports: [
+ ConfigModule.forFeature(databaseConfig),
+ TypeOrmModule.forRootAsync({
+ imports: databaseConfig.asProvider().imports,
+ name: EBITEMP_API_DATASOURCE,
+ dataSourceFactory: typeormTransactionalDataSourceFactory(EBITEMP_API_DATASOURCE),
+ useFactory: async (dbConfig: DatabaseConfig) => {
+ const config = await typeormModuleOptionsFactory(
+ dbConfig,
+ await typeormEntitiesFromImport(await import('./index.js')),
+ EBITEMP_API_DATASOURCE,
+ );
+ return config;
+ },
+ inject: [databaseConfig.KEY],
+ }),
+ ],
+ providers: [],
+ exports: [TypeOrmModule],
+})
+export class EbitempApiDatabaseModule {}
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/accounts.entity.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/accounts.entity.ts
new file mode 100644
index 0000000..c4f07a6
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/accounts.entity.ts
@@ -0,0 +1,51 @@
+import { toZod } from 'tozod';
+import { Column, Entity, Index, OneToMany } from 'typeorm';
+import { z } from 'zod';
+import { ProfiliEntity, ProfiliEntitySchema } from './profili.entity';
+
+@Index('pk_accounts', ['id'], { unique: true })
+@Entity('accounts')
+export class AccountsEntity {
+ @Column('int', { primary: true, name: 'id' })
+ id!: number;
+
+ @Column('varchar', { name: 'username', unique: true, length: 255 })
+ username!: string;
+
+ @Column('varchar', { name: 'password', nullable: true, length: 255 })
+ password!: string | null;
+
+ @Column('varchar', { name: 'nome', length: 255 })
+ nome!: string;
+
+ @Column('date', { name: 'data_creazione' })
+ dataCreazione!: Date;
+
+ @Column('date', { name: 'data_scadenza', nullable: true })
+ dataScadenza!: Date | null;
+
+ @Column('varchar', {
+ name: 'ultimo_hash_refresh_token',
+ nullable: true,
+ length: 1024,
+ })
+ ultimoHashRefreshToken!: string | null;
+
+ @OneToMany(() => ProfiliEntity, (profiliEntity) => profiliEntity.account)
+ profili!: ProfiliEntity[];
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
+
+export const AccountsEntitySchema: toZod = z.late.object(() => ({
+ id: z.number().finite(),
+ username: z.string().nonempty(),
+ password: z.string().nonempty().nullable(),
+ nome: z.string().nonempty(),
+ dataCreazione: z.date(),
+ dataScadenza: z.date().nullable(),
+ ultimoHashRefreshToken: z.string().nonempty().nullable(),
+ profili: z.array(ProfiliEntitySchema),
+}));
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_client.entity.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_client.entity.ts
new file mode 100644
index 0000000..cdf7f09
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_client.entity.ts
@@ -0,0 +1,25 @@
+import { Column, Entity, Index, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
+import { ApiClientInvocazioniEntity } from './api_client_invocazioni.entity';
+
+@Index('pk_api_client', ['id'], { unique: true })
+@Entity('api_client')
+export class ApiClientEntity {
+ @PrimaryGeneratedColumn({ type: 'int', name: 'id' })
+ id!: number;
+
+ @Column('varchar', { name: 'nome', nullable: true, length: 255 })
+ nome!: string | null;
+
+ @Column('varchar', { name: 'descrizione', nullable: true, length: 255 })
+ descrizione!: string | null;
+
+ @Column('varchar', { name: 'base_url', length: 2000 })
+ baseUrl!: string;
+
+ @OneToMany(() => ApiClientInvocazioniEntity, (apiClientInvocazioniEntity) => apiClientInvocazioniEntity.client)
+ invocazioni!: ApiClientInvocazioniEntity[];
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_client_invocazioni.entity.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_client_invocazioni.entity.ts
new file mode 100644
index 0000000..90285c0
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_client_invocazioni.entity.ts
@@ -0,0 +1,41 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
+import { ApiClientEntity } from './api_client.entity';
+
+@Index('pk_api_client_invocazioni', ['id'], { unique: true })
+@Entity('api_client_invocazioni')
+export class ApiClientInvocazioniEntity {
+ @PrimaryGeneratedColumn({ type: 'int', name: 'id' })
+ id!: number;
+
+ @Column('int', { name: 'id_client' })
+ idClient!: number;
+
+ @Column('varchar', { name: 'percorso', length: 2000 })
+ percorso!: string;
+
+ @Column('varchar', { name: 'metodo', length: 7 })
+ metodo!: string;
+
+ @Column('datetime', { name: 'timestamp' })
+ timestamp!: Date;
+
+ @Column('varchar', { name: 'richiesta', nullable: true })
+ richiesta!: string | null;
+
+ @Column('varchar', { name: 'risposta' })
+ risposta!: string;
+
+ @Column('varchar', { name: 'errori', nullable: true })
+ errori!: string | null;
+
+ @Column('bit', { name: 'flag_errore' })
+ flagErrore!: boolean;
+
+ @ManyToOne(() => ApiClientEntity, (apiClientEntity) => apiClientEntity.invocazioni)
+ @JoinColumn([{ name: 'id_client', referencedColumnName: 'id' }])
+ client!: ApiClientEntity;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_endpoint.entity.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_endpoint.entity.ts
new file mode 100644
index 0000000..450b54f
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_endpoint.entity.ts
@@ -0,0 +1,25 @@
+import { Column, Entity, Index, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
+import { ApiEndpointInvocazioniEntity } from './api_endpoint_invocazioni.entity';
+
+@Index('pk_api_endpoint', ['id'], { unique: true })
+@Entity('api_endpoint')
+export class ApiEndpointEntity {
+ @PrimaryGeneratedColumn({ type: 'int', name: 'id' })
+ id!: number;
+
+ @Column('varchar', { name: 'percorso', length: 2000 })
+ percorso!: string;
+
+ @Column('varchar', { name: 'metodo', length: 7 })
+ metodo!: string;
+
+ @OneToMany(
+ () => ApiEndpointInvocazioniEntity,
+ (apiEndpointInvocazioniEntity) => apiEndpointInvocazioniEntity.endpoint,
+ )
+ invocazioni!: ApiEndpointInvocazioniEntity[];
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_endpoint_invocazioni.entity.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_endpoint_invocazioni.entity.ts
new file mode 100644
index 0000000..11606a8
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/api_endpoint_invocazioni.entity.ts
@@ -0,0 +1,40 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
+import { AccountsEntity } from './accounts.entity';
+import { ApiEndpointEntity } from './api_endpoint.entity';
+
+@Index('pk_api_endpoint_invocazioni', ['id'], { unique: true })
+@Entity('api_endpoint_invocazioni')
+export class ApiEndpointInvocazioniEntity {
+ @PrimaryGeneratedColumn({ type: 'int', name: 'id' })
+ id!: number;
+
+ @Column('int', { name: 'id_account' })
+ idAccount!: number;
+
+ @Column('int', { name: 'id_endpoint' })
+ idEndpoint!: number;
+
+ @Column('datetime', { name: 'timestamp' })
+ timestamp!: Date;
+
+ @Column('varchar', { name: 'richiesta' })
+ richiesta!: string;
+
+ @Column('varchar', { name: 'risposta' })
+ risposta!: string;
+
+ @Column('bit', { name: 'flag_errore' })
+ flagErrore!: boolean;
+
+ @ManyToOne(() => ApiEndpointEntity, (apiEndpointEntity) => apiEndpointEntity.invocazioni)
+ @JoinColumn([{ name: 'id_endpoint', referencedColumnName: 'id' }])
+ endpoint!: ApiEndpointEntity;
+
+ @ManyToOne(() => AccountsEntity)
+ @JoinColumn([{ name: 'id_account', referencedColumnName: 'id' }])
+ account!: AccountsEntity;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/index.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/index.ts
new file mode 100644
index 0000000..95b7a6f
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/index.ts
@@ -0,0 +1,8 @@
+export * from './accounts.entity';
+export * from './api_client.entity';
+export * from './api_client_invocazioni.entity';
+export * from './api_endpoint.entity';
+export * from './api_endpoint_invocazioni.entity';
+export * from './profili.entity';
+export * from './ruoli.entity';
+export * from './tipi_jobs.entity';
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/profili.entity.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/profili.entity.ts
new file mode 100644
index 0000000..b731c21
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/profili.entity.ts
@@ -0,0 +1,38 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm';
+import { AccountsEntity, AccountsEntitySchema } from './accounts.entity';
+import { RuoliEntity, RuoliEntitySchema } from './ruoli.entity';
+import { toZod } from 'tozod';
+import { z } from 'zod';
+
+@Index('pk_profili', ['id'], { unique: true })
+@Entity('profili')
+export class ProfiliEntity {
+ @Column('int', { primary: true, name: 'id' })
+ id!: number;
+
+ @Column('int', { name: 'id_account', unique: true })
+ idAccount!: number;
+
+ @Column('int', { name: 'id_ruolo', unique: true })
+ idRuolo!: number;
+
+ @ManyToOne(() => AccountsEntity, (accountsEntity) => accountsEntity.profili)
+ @JoinColumn([{ name: 'id_account', referencedColumnName: 'id' }])
+ account!: AccountsEntity;
+
+ @ManyToOne(() => RuoliEntity, (ruoliEntity) => ruoliEntity.profili)
+ @JoinColumn([{ name: 'id_ruolo', referencedColumnName: 'id' }])
+ ruolo!: RuoliEntity;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
+
+export const ProfiliEntitySchema: toZod = z.late.object(() => ({
+ id: z.number().finite(),
+ idAccount: AccountsEntitySchema.shape.id,
+ idRuolo: RuoliEntitySchema.shape.id,
+ account: AccountsEntitySchema,
+ ruolo: RuoliEntitySchema,
+}));
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/ruoli.entity.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/ruoli.entity.ts
new file mode 100644
index 0000000..41ee48b
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/ruoli.entity.ts
@@ -0,0 +1,31 @@
+import { Column, Entity, Index, OneToMany } from 'typeorm';
+import { ProfiliEntity, ProfiliEntitySchema } from './profili.entity';
+import { toZod } from 'tozod';
+import { z } from 'zod';
+
+@Index('pk_ruoli', ['id'], { unique: true })
+@Entity('ruoli')
+export class RuoliEntity {
+ @Column('int', { primary: true, name: 'id' })
+ id!: number;
+
+ @Column('varchar', { name: 'nome', unique: true, length: 255 })
+ nome!: string;
+
+ @Column('varchar', { name: 'descrizione', length: 255 })
+ descrizione!: string;
+
+ @OneToMany(() => ProfiliEntity, (profiliEntity) => profiliEntity.ruolo)
+ profili!: ProfiliEntity[];
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
+
+export const RuoliEntitySchema: toZod = z.late.object(() => ({
+ id: z.number().finite(),
+ nome: z.string().nonempty(),
+ descrizione: z.string().nonempty(),
+ profili: z.array(ProfiliEntitySchema),
+}));
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/tipi_jobs.entity.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/tipi_jobs.entity.ts
new file mode 100644
index 0000000..0a1f013
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/entities/tipi_jobs.entity.ts
@@ -0,0 +1,45 @@
+import { Column, Entity, Index } from 'typeorm';
+import { Enum, Enumify } from '../../../../enumify/enumify';
+
+export class InviaMailSeErrori {
+ @Column('bit', { name: 'flag', default: () => '(0)' })
+ flagAttivo!: boolean;
+
+ @Column('varchar', { name: 'oggetto', nullable: true, length: 255 })
+ oggetto!: string | null;
+
+ @Column('varchar', { name: 'destinatari', nullable: true, length: 255 })
+ destinatari!: string | null;
+
+ @Column('varchar', { name: 'cc', nullable: true, length: 255 })
+ cc!: string | null;
+}
+
+@Index('pk_tipi_jobs', ['id'], { unique: true })
+@Entity('tipi_jobs')
+export class TipiJobsEntity extends Enumify {
+ static _ = TipiJobsEntity.closeEnum();
+
+ @Column('int', { primary: true, name: 'id' })
+ declare id: number;
+
+ @Column('varchar', { name: 'nome', length: 50 })
+ declare nome: string;
+
+ @Column('varchar', { name: 'descrizione', nullable: true, length: 255 })
+ descrizione!: string | null;
+
+ @Column(() => InviaMailSeErrori, { prefix: 'invia_mail_se_errori' })
+ inviaMailSeErrori!: InviaMailSeErrori;
+
+ @Column('bit', { name: 'flag_attivo', default: () => '(0)' })
+ flagAttivo!: boolean;
+
+ @Column('varchar', { name: 'pattern_cron', length: 20 })
+ patternCron!: string;
+
+ public constructor(id: number, nome: string, patternCron: string) {
+ super(id, nome);
+ this.patternCron = patternCron;
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/index.ts b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/index.ts
new file mode 100644
index 0000000..697510e
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/ebitemp-api/index.ts
@@ -0,0 +1 @@
+export * from './entities';
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/database.config.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/database.config.ts
new file mode 100644
index 0000000..5679be5
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/database.config.ts
@@ -0,0 +1,10 @@
+import coerceRecordTypes from '../../../config/utils/coerce-record-types';
+import { databaseConfigFactory, rawDatabaseSchema } from '../../utils/database-config';
+
+const env = coerceRecordTypes(process.env);
+const envParsed = rawDatabaseSchema.strict().parse({
+ connectionString: env['DATABASE_OCEANO_CONNECTION_STRING'],
+ secure: env['DATABASE_OCEANO_SECURE'],
+});
+
+export const databaseConfig = databaseConfigFactory(envParsed);
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/database.constants.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/database.constants.ts
new file mode 100644
index 0000000..e6c10c7
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/database.constants.ts
@@ -0,0 +1 @@
+export const OCEANO_DATASOURCE = 'Oceano';
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/database.module.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/database.module.ts
new file mode 100644
index 0000000..567993a
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/database.module.ts
@@ -0,0 +1,32 @@
+import { Module } from '@nestjs/common';
+import { ConfigModule } from '@nestjs/config';
+import { TypeOrmModule } from '@nestjs/typeorm';
+import { DatabaseConfig } from '../../utils/database-config';
+import { typeormTransactionalDataSourceFactory } from '../../utils/typeorm-data-source-factory';
+import { typeormEntitiesFromImport } from '../../utils/typeorm-import-entities';
+import { typeormModuleOptionsFactory } from '../../utils/typeorm-module-options-factory';
+import { databaseConfig } from './database.config';
+import { OCEANO_DATASOURCE } from './database.constants';
+
+@Module({
+ imports: [
+ ConfigModule.forFeature(databaseConfig),
+ TypeOrmModule.forRootAsync({
+ imports: databaseConfig.asProvider().imports,
+ name: OCEANO_DATASOURCE,
+ dataSourceFactory: typeormTransactionalDataSourceFactory(OCEANO_DATASOURCE),
+ useFactory: async (dbConfig: DatabaseConfig) => {
+ const config = await typeormModuleOptionsFactory(
+ dbConfig,
+ await typeormEntitiesFromImport(await import('./index.js')),
+ OCEANO_DATASOURCE,
+ );
+ return config;
+ },
+ inject: [databaseConfig.KEY],
+ }),
+ ],
+ providers: [],
+ exports: [TypeOrmModule],
+})
+export class OceanoDatabaseModule {}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/API_CAP_Luoghi.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/API_CAP_Luoghi.entity.ts
new file mode 100644
index 0000000..2b8ee4a
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/API_CAP_Luoghi.entity.ts
@@ -0,0 +1,20 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm';
+import { ApiLuoghiEntity } from './API_Luoghi.entity';
+
+@Index('nk_API_CAP_Luoghi', ['codice', 'cap'], { unique: true })
+@Entity('API_CAP_Luoghi')
+export class ApiCapLuoghiEntity {
+ @Column('varchar', { primary: true, name: 'codice', length: 5 })
+ codice!: string;
+
+ @Column('varchar', { primary: true, name: 'cap', length: 5 })
+ cap!: string;
+
+ @ManyToOne(() => ApiLuoghiEntity)
+ @JoinColumn([{ name: 'codice', referencedColumnName: 'codice' }])
+ luogo!: ApiLuoghiEntity;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/API_Luoghi.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/API_Luoghi.entity.ts
new file mode 100644
index 0000000..d79e29e
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/API_Luoghi.entity.ts
@@ -0,0 +1,38 @@
+import { Column, Entity, Index, OneToMany } from 'typeorm';
+import { ApiCapLuoghiEntity } from './API_CAP_Luoghi.entity';
+import { SocioEntity } from './socio.entity';
+
+@Index('PK_API_Luoghi', ['codice'], { unique: true })
+@Entity('API_Luoghi')
+export class ApiLuoghiEntity {
+ @Column('varchar', { primary: true, name: 'codice', length: 5 })
+ codice!: string;
+
+ @Column('nvarchar', { name: 'comune', nullable: true, length: 255 })
+ comune!: string | null;
+
+ @Column('nvarchar', { name: 'sigla_provincia', nullable: true, length: 5 })
+ siglaProvincia!: string | null;
+
+ @Column('nvarchar', { name: 'provincia', nullable: true, length: 255 })
+ provincia!: string | null;
+
+ @Column('nvarchar', { name: 'codice_regione', nullable: true, length: 5 })
+ codiceRegione!: string | null;
+
+ @Column('nvarchar', { name: 'regione', nullable: true, length: 255 })
+ regione!: string | null;
+
+ @Column('nvarchar', { name: 'codice_stato', nullable: true, length: 5 })
+ codiceStato!: string | null;
+
+ @Column('nvarchar', { name: 'stato', nullable: true, length: 255 })
+ stato!: string | null;
+
+ @Column('int', { name: 'flag_attivo', nullable: true })
+ flagAttivo!: number | null;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/API_Luoghi_Estero.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/API_Luoghi_Estero.entity.ts
new file mode 100644
index 0000000..1afe9ae
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/API_Luoghi_Estero.entity.ts
@@ -0,0 +1,14 @@
+import { Column, Entity, PrimaryColumn } from 'typeorm';
+
+@Entity('API_Luoghi_Estero')
+export class ApiLuoghiEsteroEntity {
+ @PrimaryColumn('varchar', { name: 'codice', length: 5 })
+ codice!: string;
+
+ @Column('nvarchar', { name: 'codice_stato', length: 5 })
+ codiceStato!: string;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/allegati.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/allegati.entity.ts
new file mode 100644
index 0000000..10d30b3
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/allegati.entity.ts
@@ -0,0 +1,84 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm';
+
+@Index('PK_allegati', ['codiceAllegato'], { unique: true })
+@Entity('allegati')
+export class AllegatiEntity {
+ @Column('bigint', { primary: true, name: 'codiceAllegato' })
+ codiceAllegato!: string;
+
+ @Column('int', { name: 'tipoOrigine', nullable: true })
+ tipoOrigine!: number | null;
+
+ @Column('bigint', { name: 'codiceOrigine', nullable: true })
+ codiceOrigine!: string | null;
+
+ @Column('nvarchar', {
+ name: 'descrizioneAllegato',
+ nullable: true,
+ length: 255,
+ })
+ descrizioneAllegato!: string | null;
+
+ @Column('nvarchar', { name: 'dataAllegato', nullable: true, length: 10 })
+ dataAllegato!: string | null;
+
+ @Column('nvarchar', {
+ name: 'cartellaAllegato',
+ nullable: true,
+ length: 2048,
+ })
+ cartellaAllegato!: string | null;
+
+ @Column('nvarchar', { name: 'nomeFileAllegato', nullable: true, length: 255 })
+ nomeFileAllegato!: string | null;
+
+ @Column('ntext', { name: 'noteAllegato', nullable: true })
+ noteAllegato!: string | null;
+
+ @Column('bigint', { name: 'utenteCreazione', nullable: true })
+ utenteCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'dataCreazione', nullable: true, length: 10 })
+ dataCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'oraCreazione', nullable: true, length: 8 })
+ oraCreazione!: string | null;
+
+ @Column('bigint', { name: 'utenteModifica', nullable: true })
+ utenteModifica!: string | null;
+
+ @Column('nvarchar', { name: 'dataModifica', nullable: true, length: 10 })
+ dataModifica!: string | null;
+
+ @Column('nvarchar', { name: 'oraModifica', nullable: true, length: 8 })
+ oraModifica!: string | null;
+
+ @Column('int', { name: 'pubblicatoWEB', nullable: true })
+ pubblicatoWeb!: number | null;
+
+ @Column('int', {
+ name: 'trasferitoWEB',
+ nullable: true,
+ default: () => '(0)',
+ })
+ trasferitoWeb!: number | null;
+
+ @Column('nvarchar', {
+ name: 'dataPubblicazione',
+ nullable: true,
+ length: 10,
+ default: () => "''",
+ })
+ dataPubblicazione!: string | null;
+
+ @Column('bigint', {
+ name: 'codiceProtocolloGenerico',
+ nullable: true,
+ default: () => '(0)',
+ })
+ codiceProtocolloGenerico!: string | null;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/contratto.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/contratto.entity.ts
new file mode 100644
index 0000000..d813d76
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/contratto.entity.ts
@@ -0,0 +1,492 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
+import { EnteEntity } from './ente.entity';
+import { SocioContrattoEntity } from './socioContratto.entity';
+
+@Index('PK_contratto', ['codiceContratto'], { unique: true })
+@Entity('contratto')
+export class ContrattoEntity {
+ @Column('bigint', { primary: true, name: 'codiceContratto' })
+ codiceContratto!: string;
+
+ @Column('bigint', { name: 'codiceEnte', nullable: true })
+ codiceEnte!: string | null;
+
+ @Column('nvarchar', { name: 'contratto', nullable: true, length: 255 })
+ contratto!: string | null;
+
+ @Column('nvarchar', { name: 'dataContratto', nullable: true, length: 10 })
+ dataContratto!: string | null;
+
+ @Column('int', { name: 'rinnovoAutomatico', nullable: true })
+ rinnovoAutomatico!: number | null;
+
+ @Column('nvarchar', {
+ name: 'dataDecorrenzaContratto',
+ nullable: true,
+ length: 10,
+ })
+ dataDecorrenzaContratto!: string | null;
+
+ @Column('nvarchar', {
+ name: 'codiceEconomicoEsolver',
+ nullable: true,
+ length: 30,
+ })
+ codiceEconomicoEsolver!: string | null;
+
+ @Column('nvarchar', {
+ name: 'codicePatrimonialeEsolver',
+ nullable: true,
+ length: 30,
+ })
+ codicePatrimonialeEsolver!: string | null;
+
+ @Column('int', { name: 'iscrizioneFamiliariObbligatoria', nullable: true })
+ iscrizioneFamiliariObbligatoria!: number | null;
+
+ @Column('int', {
+ name: 'inizioDecorrenzaNuoveAdesioniAderenti',
+ nullable: true,
+ })
+ inizioDecorrenzaNuoveAdesioniAderenti!: number | null;
+
+ @Column('int', {
+ name: 'inizioDecorrenzaNuoveAdesioniFamiliari',
+ nullable: true,
+ })
+ inizioDecorrenzaNuoveAdesioniFamiliari!: number | null;
+
+ @Column('int', { name: 'cessazioneInfraAnnuale', nullable: true })
+ cessazioneInfraAnnuale!: number | null;
+
+ @Column('int', { name: 'numeroGiorniRimborso', nullable: true })
+ numeroGiorniRimborso!: number | null;
+
+ @Column('int', { name: 'rimborsoPersona', nullable: true })
+ rimborsoPersona!: number | null;
+
+ @Column('int', { name: 'rimborsoFax', nullable: true })
+ rimborsoFax!: number | null;
+
+ @Column('int', { name: 'rimborsoEmail', nullable: true })
+ rimborsoEmail!: number | null;
+
+ @Column('int', { name: 'rimborsoPosta', nullable: true })
+ rimborsoPosta!: number | null;
+
+ @Column('int', { name: 'rimborsoWeb', nullable: true })
+ rimborsoWeb!: number | null;
+
+ @Column('bigint', { name: 'utentecreazione', nullable: true })
+ utentecreazione!: string | null;
+
+ @Column('nvarchar', { name: 'dataCreazione', nullable: true, length: 10 })
+ dataCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'oraCreazione', nullable: true, length: 8 })
+ oraCreazione!: string | null;
+
+ @Column('bigint', { name: 'utenteModifica', nullable: true })
+ utenteModifica!: string | null;
+
+ @Column('nvarchar', { name: 'dataModifica', nullable: true, length: 10 })
+ dataModifica!: string | null;
+
+ @Column('nvarchar', { name: 'oraModifica', nullable: true, length: 8 })
+ oraModifica!: string | null;
+
+ @Column('ntext', { name: 'noteContratto', nullable: true })
+ noteContratto!: string | null;
+
+ @Column('int', { name: 'versamentiTerzi', nullable: true })
+ versamentiTerzi!: number | null;
+
+ @Column('int', { name: 'ignoraControlloPagamenti', nullable: true })
+ ignoraControlloPagamenti!: number | null;
+
+ @Column('int', { name: 'anniRinnovo', nullable: true })
+ anniRinnovo!: number | null;
+
+ @Column('bigint', { name: 'codiceRivenditore', nullable: true })
+ codiceRivenditore!: string | null;
+
+ @Column('int', {
+ name: 'inizioDecorrenzaNuoveAdesioniNascita',
+ nullable: true,
+ })
+ inizioDecorrenzaNuoveAdesioniNascita!: number | null;
+
+ @Column('int', { name: 'numeroGiorniNascita', nullable: true })
+ numeroGiorniNascita!: number | null;
+
+ @Column('int', { name: 'mesiEsclusionePatologieAderenti', nullable: true })
+ mesiEsclusionePatologieAderenti!: number | null;
+
+ @Column('int', { name: 'mesiEsclusionePatologieFamiliari', nullable: true })
+ mesiEsclusionePatologieFamiliari!: number | null;
+
+ @Column('int', { name: 'coperturaPreesistenzeAderenti', nullable: true })
+ coperturaPreesistenzeAderenti!: number | null;
+
+ @Column('int', { name: 'coperturaPreesistenzeFamiliari', nullable: true })
+ coperturaPreesistenzeFamiliari!: number | null;
+
+ @Column('int', { name: 'adesioniFdaIndividuali', nullable: true })
+ adesioniFdaIndividuali!: number | null;
+
+ @Column('nvarchar', {
+ name: 'dataAssunzioneAderenti',
+ nullable: true,
+ length: 10,
+ })
+ dataAssunzioneAderenti!: string | null;
+
+ @Column('int', { name: 'associazioniIndividuali', nullable: true })
+ associazioniIndividuali!: number | null;
+
+ @Column('bigint', { name: 'categoria', nullable: true })
+ categoria!: string | null;
+
+ @Column('nvarchar', { name: 'email', nullable: true, length: 80 })
+ email!: string | null;
+
+ @Column('nvarchar', { name: 'fax', nullable: true, length: 80 })
+ fax!: string | null;
+
+ @Column('nvarchar', { name: 'telefono', nullable: true, length: 80 })
+ telefono!: string | null;
+
+ @Column('nvarchar', { name: 'sitoWeb', nullable: true, length: 80 })
+ sitoWeb!: string | null;
+
+ @Column('nvarchar', { name: 'riferimento', nullable: true, length: 80 })
+ riferimento!: string | null;
+
+ @Column('int', { name: 'comunicazioniFax', nullable: true })
+ comunicazioniFax!: number | null;
+
+ @Column('int', { name: 'comunicazioniEmail', nullable: true })
+ comunicazioniEmail!: number | null;
+
+ @Column('int', { name: 'comunicazioniSito', nullable: true })
+ comunicazioniSito!: number | null;
+
+ @Column('int', { name: 'comunicazioniPosta', nullable: true })
+ comunicazioniPosta!: number | null;
+
+ @Column('int', { name: 'gestionePreventiviWEB', nullable: true })
+ gestionePreventiviWeb!: number | null;
+
+ @Column('nvarchar', {
+ name: 'codiceDocumentoWEB',
+ nullable: true,
+ length: 80,
+ })
+ codiceDocumentoWeb!: string | null;
+
+ @Column('int', { name: 'numeroGiorniEffettuareRimborsi', nullable: true })
+ numeroGiorniEffettuareRimborsi!: number | null;
+
+ @Column('int', { name: 'numeroGiorniIntegrazioneDocumenti', nullable: true })
+ numeroGiorniIntegrazioneDocumenti!: number | null;
+
+ @Column('int', { name: 'gestioneIndividuali', nullable: true })
+ gestioneIndividuali!: number | null;
+
+ @Column('int', { name: 'fondoPluriaziendale', nullable: true })
+ fondoPluriaziendale!: number | null;
+
+ @Column('nvarchar', { name: 'emailCertificata', nullable: true, length: 80 })
+ emailCertificata!: string | null;
+
+ @Column('int', { name: 'comunicazioniEmailCertificata', nullable: true })
+ comunicazioniEmailCertificata!: number | null;
+
+ @Column('nvarchar', {
+ name: 'dataAssunzioneFamiliari',
+ nullable: true,
+ length: 10,
+ })
+ dataAssunzioneFamiliari!: string | null;
+
+ @Column('int', {
+ name: 'coperturaPreesistenzeAderentiNuoveAssunzioni',
+ nullable: true,
+ })
+ coperturaPreesistenzeAderentiNuoveAssunzioni!: number | null;
+
+ @Column('int', {
+ name: 'coperturaPreesistenzeFamiliariNuoveAssunzioni',
+ nullable: true,
+ })
+ coperturaPreesistenzeFamiliariNuoveAssunzioni!: number | null;
+
+ @Column('int', { name: 'noCessazioneAutomaticaFineAnno', nullable: true })
+ noCessazioneAutomaticaFineAnno!: number | null;
+
+ @Column('int', { name: 'contrattoRateSemestrali', nullable: true })
+ contrattoRateSemestrali!: number | null;
+
+ @Column('decimal', {
+ name: 'moraRitardoPagamenti',
+ nullable: true,
+ precision: 18,
+ scale: 2,
+ })
+ moraRitardoPagamenti!: number | null;
+
+ @Column('decimal', {
+ name: 'quotaRichiestaFondo',
+ nullable: true,
+ precision: 18,
+ scale: 2,
+ })
+ quotaRichiestaFondo!: number | null;
+
+ @Column('int', { name: 'percQuotaRichiestaFondo', nullable: true })
+ percQuotaRichiestaFondo!: number | null;
+
+ @Column('int', { name: 'scontoIndividuali', nullable: true })
+ scontoIndividuali!: number | null;
+
+ @Column('int', {
+ name: 'modalitaCalcoloDatiContributiviIndividuali',
+ nullable: true,
+ })
+ modalitaCalcoloDatiContributiviIndividuali!: number | null;
+
+ @Column('bigint', { name: 'codiceFiguraContratto', nullable: true })
+ codiceFiguraContratto!: string | null;
+
+ @Column('nvarchar', {
+ name: 'nomeModelloTesserini',
+ nullable: true,
+ length: 255,
+ })
+ nomeModelloTesserini!: string | null;
+
+ @Column('nvarchar', {
+ name: 'nomeModelloLettera',
+ nullable: true,
+ length: 255,
+ })
+ nomeModelloLettera!: string | null;
+
+ @Column('int', { name: 'ignoraControlloPagamentiTitolare', nullable: true })
+ ignoraControlloPagamentiTitolare!: number | null;
+
+ @Column('int', { name: 'ignoraControlloPagamentiAzienda', nullable: true })
+ ignoraControlloPagamentiAzienda!: number | null;
+
+ @Column('bigint', { name: 'codicePromoter', nullable: true })
+ codicePromoter!: string | null;
+
+ @Column('bigint', { name: 'codiceOriginePromoter', nullable: true })
+ codiceOriginePromoter!: string | null;
+
+ @Column('int', { name: 'fornituraTesserino', nullable: true })
+ fornituraTesserino!: number | null;
+
+ @Column('nvarchar', {
+ name: 'dataChiusuraContratto',
+ nullable: true,
+ length: 10,
+ })
+ dataChiusuraContratto!: string | null;
+
+ @Column('nvarchar', {
+ name: 'nomeModelloLetteraRID',
+ nullable: true,
+ length: 255,
+ })
+ nomeModelloLetteraRid!: string | null;
+
+ @Column('nvarchar', {
+ name: 'nomeModelloLetteraAdesione',
+ nullable: true,
+ length: 255,
+ })
+ nomeModelloLetteraAdesione!: string | null;
+
+ @Column('nvarchar', {
+ name: 'nomeModelloLetteraAdeguamenti',
+ nullable: true,
+ length: 255,
+ })
+ nomeModelloLetteraAdeguamenti!: string | null;
+
+ @Column('int', { name: 'coopersalute', nullable: true })
+ coopersalute!: number | null;
+
+ @Column('int', { name: 'forzaEstensioneTolleranza', nullable: true })
+ forzaEstensioneTolleranza!: number | null;
+
+ @Column('int', { name: 'giorniEstensioneTolleranza', nullable: true })
+ giorniEstensioneTolleranza!: number | null;
+
+ @Column('nvarchar', {
+ name: 'nomeModelloLetteraSollecito',
+ nullable: true,
+ length: 255,
+ })
+ nomeModelloLetteraSollecito!: string | null;
+
+ @Column('nvarchar', {
+ name: 'nomeModelloLetteraSollecito2',
+ nullable: true,
+ length: 255,
+ })
+ nomeModelloLetteraSollecito2!: string | null;
+
+ @Column('nvarchar', {
+ name: 'nomeModelloLetteraNeonato',
+ nullable: true,
+ length: 255,
+ })
+ nomeModelloLetteraNeonato!: string | null;
+
+ @Column('int', { name: 'comunicazioniViaEmail', nullable: true })
+ comunicazioniViaEmail!: number | null;
+
+ @Column('int', {
+ name: 'modalitaCalcoloQuotaAssociativaFondo',
+ default: () => '(0)',
+ })
+ modalitaCalcoloQuotaAssociativaFondo!: number;
+
+ @Column('int', {
+ name: 'modalitaCalcoloQuotaAssociativaNumeroFondo',
+ default: () => '(0)',
+ })
+ modalitaCalcoloQuotaAssociativaNumeroFondo!: number;
+
+ @Column('int', { name: 'quotaAssociativaFondo', default: () => '(0)' })
+ quotaAssociativaFondo!: number;
+
+ @Column('int', { name: 'tipoAnamnesi', default: () => '(1)' })
+ tipoAnamnesi!: number;
+
+ @Column('int', { name: 'primoCheck', default: () => '(1)' })
+ primoCheck!: number;
+
+ @Column('int', { name: 'secondoCheck', default: () => '(1)' })
+ secondoCheck!: number;
+
+ @Column('ntext', { name: 'testoPrimoCheck', default: () => "''" })
+ testoPrimoCheck!: string;
+
+ @Column('ntext', { name: 'testoSecondoCheck', default: () => "''" })
+ testoSecondoCheck!: string;
+
+ @Column('int', { name: 'calcolaQuotaWEB', default: () => '(1)' })
+ calcolaQuotaWeb!: number;
+
+ @Column('int', { name: 'verificaEsistenzaOnline', default: () => '(1)' })
+ verificaEsistenzaOnline!: number;
+
+ @Column('int', { name: 'titolareGiaAssociato', default: () => '(1)' })
+ titolareGiaAssociato!: number;
+
+ @Column('ntext', {
+ name: 'intestazionePrimaPaginaAdesione',
+ default: () => "''",
+ })
+ intestazionePrimaPaginaAdesione!: string;
+
+ @Column('ntext', {
+ name: 'intestazioneUltimaPaginaAdesione',
+ default: () => "''",
+ })
+ intestazioneUltimaPaginaAdesione!: string;
+
+ @Column('int', { name: 'importaComeAssociati', default: () => '(1)' })
+ importaComeAssociati!: number;
+
+ @Column('int', { name: 'importazioneAutomatica', default: () => '(1)' })
+ importazioneAutomatica!: number;
+
+ @Column('int', { name: 'stampaModuloAdesione', default: () => '(1)' })
+ stampaModuloAdesione!: number;
+
+ @Column('int', { name: 'terzoCheck', default: () => '(1)' })
+ terzoCheck!: number;
+
+ @Column('ntext', { name: 'testoTerzoCheck', default: () => "''" })
+ testoTerzoCheck!: string;
+
+ @Column('ntext', { name: 'testoEmailPreventivo', default: () => "''" })
+ testoEmailPreventivo!: string;
+
+ @Column('ntext', { name: 'testoEmailAdesione', default: () => "''" })
+ testoEmailAdesione!: string;
+
+ @Column('ntext', { name: 'oggettoEmailPreventivo', default: () => "''" })
+ oggettoEmailPreventivo!: string;
+
+ @Column('ntext', { name: 'oggettoEmailAdesione', default: () => "''" })
+ oggettoEmailAdesione!: string;
+
+ @Column('nvarchar', {
+ name: 'nomeModelloLetteraStampaAdesione',
+ length: 255,
+ default: () => "''",
+ })
+ nomeModelloLetteraStampaAdesione!: string;
+
+ @Column('ntext', {
+ name: 'oggettoSecondaNotificaScadenzaPreventivo',
+ default: () => "''",
+ })
+ oggettoSecondaNotificaScadenzaPreventivo!: string;
+
+ @Column('ntext', {
+ name: 'oggettoPrimaNotificaScadenzaPreventivo',
+ default: () => "''",
+ })
+ oggettoPrimaNotificaScadenzaPreventivo!: string;
+
+ @Column('ntext', {
+ name: 'testoSecondaNotificaScadenzaPreventivo',
+ default: () => "''",
+ })
+ testoSecondaNotificaScadenzaPreventivo!: string;
+
+ @Column('ntext', {
+ name: 'testoPrimaNotificaScadenzaPreventivo',
+ default: () => "''",
+ })
+ testoPrimaNotificaScadenzaPreventivo!: string;
+
+ @Column('bigint', { name: 'codiceBancaContributi', default: () => '(0)' })
+ codiceBancaContributi!: string;
+
+ @Column('bigint', { name: 'codiceBancaRimborsi', default: () => '(0)' })
+ codiceBancaRimborsi!: string;
+
+ @Column('ntext', {
+ name: 'testataCertificazione',
+ nullable: true,
+ default: () => "''",
+ })
+ testataCertificazione!: string | null;
+
+ @Column('ntext', { name: 'codaCertificazione', default: () => "''" })
+ codaCertificazione!: string;
+
+ @Column('ntext', { name: 'testataRiepilogoRimborsi', default: () => "''" })
+ testataRiepilogoRimborsi!: string;
+
+ @Column('int', { name: 'adesioneInfraAnnuale', default: () => '(0)' })
+ adesioneInfraAnnuale!: number;
+
+ @ManyToOne(() => EnteEntity, (enteEntity) => enteEntity.contratti)
+ @JoinColumn([{ name: 'codiceEnte', referencedColumnName: 'codiceEnte' }])
+ ente!: EnteEntity;
+
+ @OneToMany(() => SocioContrattoEntity, (socioContrattoEntity) => socioContrattoEntity.contratto)
+ socioContratto!: SocioContrattoEntity[];
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/ente.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/ente.entity.ts
new file mode 100644
index 0000000..611f8cf
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/ente.entity.ts
@@ -0,0 +1,87 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
+import { ContrattoEntity } from './contratto.entity';
+import { GruppoEntity } from './gruppo.entity';
+
+@Index('PK_ent', ['codiceEnte'], { unique: true })
+@Entity('ente')
+export class EnteEntity {
+ @Column('bigint', { primary: true, name: 'codiceEnte' })
+ codiceEnte!: string;
+
+ @Column('nvarchar', { name: 'ragioneSociale', nullable: true, length: 255 })
+ ragioneSociale!: string | null;
+
+ @Column('nvarchar', { name: 'partitaIva', nullable: true, length: 25 })
+ partitaIva!: string | null;
+
+ @Column('nvarchar', { name: 'codiceFiscale', nullable: true, length: 25 })
+ codiceFiscale!: string | null;
+
+ @Column('ntext', { name: 'noteEnte', nullable: true })
+ noteEnte!: string | null;
+
+ @Column('nvarchar', {
+ name: 'codiceDivisioneEsolver',
+ nullable: true,
+ length: 25,
+ })
+ codiceDivisioneEsolver!: string | null;
+
+ @Column('int', { name: 'enteAttivo', nullable: true })
+ enteAttivo!: number | null;
+
+ @Column('nvarchar', { name: 'indirizzoEnte', nullable: true, length: 80 })
+ indirizzoEnte!: string | null;
+
+ @Column('nvarchar', { name: 'numeroCivicoEnte', nullable: true, length: 80 })
+ numeroCivicoEnte!: string | null;
+
+ @Column('nvarchar', { name: 'capEnte', nullable: true, length: 10 })
+ capEnte!: string | null;
+
+ @Column('nvarchar', { name: 'localitaEnte', nullable: true, length: 80 })
+ localitaEnte!: string | null;
+
+ @Column('bigint', { name: 'utenteCreazione', nullable: true })
+ utenteCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'dataCreazione', nullable: true, length: 10 })
+ dataCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'oraCreazione', nullable: true, length: 8 })
+ oraCreazione!: string | null;
+
+ @Column('bigint', { name: 'utenteModifica', nullable: true })
+ utenteModifica!: string | null;
+
+ @Column('nvarchar', { name: 'dataModifica', nullable: true, length: 10 })
+ dataModifica!: string | null;
+
+ @Column('nvarchar', { name: 'oraModifica', nullable: true, length: 8 })
+ oraModifica!: string | null;
+
+ @Column('bigint', { name: 'codiceGruppo', nullable: true })
+ codiceGruppo!: string | null;
+
+ @Column('bigint', { name: 'statoEnte', nullable: true })
+ statoEnte!: string | null;
+
+ @Column('bigint', { name: 'provinciaEnte', nullable: true })
+ provinciaEnte!: string | null;
+
+ @Column('int', { name: 'inOsservazione', nullable: true })
+ inOsservazione!: number | null;
+
+ @Column('nvarchar', { name: 'sitoInternet', nullable: true, length: 255 })
+ sitoInternet!: string | null;
+
+ @ManyToOne(() => GruppoEntity, (gruppoEntity) => gruppoEntity.enti)
+ gruppo!: ContrattoEntity;
+
+ @OneToMany(() => ContrattoEntity, (contrattoEntity) => contrattoEntity.ente)
+ contratti!: ContrattoEntity[];
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/formeAssistenza.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/formeAssistenza.entity.ts
new file mode 100644
index 0000000..0901c97
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/formeAssistenza.entity.ts
@@ -0,0 +1,158 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
+import { SocioFormeAssistenzaEntity } from './socioFormeAssistenza.entity';
+
+@Index('PK_formeAssistenza', ['codiceFda'], { unique: true })
+@Entity('formeAssistenza')
+export class FormeAssistenzaEntity {
+ @Column('bigint', { name: 'codiceGruppo' })
+ codiceGruppo!: string;
+
+ @Column('bigint', { primary: true, name: 'codiceFda' })
+ codiceFda!: string;
+
+ @Column('nvarchar', { name: 'descrizioneFda', nullable: true, length: 80 })
+ descrizioneFda!: string | null;
+
+ @Column('int', { name: 'attivaFda', nullable: true })
+ attivaFda!: number | null;
+
+ @Column('int', { name: 'fornituraTesserino', nullable: true })
+ fornituraTesserino!: number | null;
+
+ @Column('ntext', { name: 'noteFda', nullable: true })
+ noteFda!: string | null;
+
+ @Column('bigint', { name: 'utenteCreazione', nullable: true })
+ utenteCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'dataCreazione', nullable: true, length: 10 })
+ dataCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'oraCreazione', nullable: true, length: 8 })
+ oraCreazione!: string | null;
+
+ @Column('bigint', { name: 'utenteModifica', nullable: true })
+ utenteModifica!: string | null;
+
+ @Column('nvarchar', { name: 'dataModifica', nullable: true, length: 10 })
+ dataModifica!: string | null;
+
+ @Column('nvarchar', { name: 'oraModifica', nullable: true, length: 8 })
+ oraModifica!: string | null;
+
+ @Column('int', { name: 'attivaDiretta', nullable: true })
+ attivaDiretta!: number | null;
+
+ @Column('int', { name: 'attivaIndiretta', nullable: true })
+ attivaIndiretta!: number | null;
+
+ @Column('int', { name: 'anniAdesione', nullable: true })
+ anniAdesione!: number | null;
+
+ @Column('int', { name: 'gestionePreventivo', nullable: true })
+ gestionePreventivo!: number | null;
+
+ @Column('int', { name: 'interoNucleoFamiliare', nullable: true })
+ interoNucleoFamiliare!: number | null;
+
+ @Column('int', { name: 'escludeDocRimborsi', nullable: true })
+ escludeDocRimborsi!: number | null;
+
+ @Column('int', { name: 'struttureDirettaIncluse', nullable: true })
+ struttureDirettaIncluse!: number | null;
+
+ @Column('int', { name: 'struttureIndirettaIncluse', nullable: true })
+ struttureIndirettaIncluse!: number | null;
+
+ @Column('int', { name: 'categorieDirettaIncluse', nullable: true })
+ categorieDirettaIncluse!: number | null;
+
+ @Column('int', { name: 'categorieIndirettaIncluse', nullable: true })
+ categorieIndirettaIncluse!: number | null;
+
+ @Column('nvarchar', {
+ name: 'descrizioneTesserino',
+ nullable: true,
+ length: 80,
+ })
+ descrizioneTesserino!: string | null;
+
+ @Column('bigint', { name: 'codiceFdaOrigine', nullable: true })
+ codiceFdaOrigine!: string | null;
+
+ @Column('nvarchar', {
+ name: 'dataInizioValidita',
+ nullable: true,
+ length: 10,
+ })
+ dataInizioValidita!: string | null;
+
+ @Column('nvarchar', { name: 'dataFineValidita', nullable: true, length: 10 })
+ dataFineValidita!: string | null;
+
+ @Column('int', { name: 'limiteMassimoAssistenza', nullable: true })
+ limiteMassimoAssistenza!: number | null;
+
+ @Column('int', { name: 'limiteMinimoAssistenza', nullable: true })
+ limiteMinimoAssistenza!: number | null;
+
+ @Column('int', { name: 'limiteEtaAderentiDa', nullable: true })
+ limiteEtaAderentiDa!: number | null;
+
+ @Column('int', { name: 'limiteEtaFamiliariDa', nullable: true })
+ limiteEtaFamiliariDa!: number | null;
+
+ @Column('int', { name: 'limiteEtaAderentiA', nullable: true })
+ limiteEtaAderentiA!: number | null;
+
+ @Column('int', { name: 'limiteEtaFamiliariA', nullable: true })
+ limiteEtaFamiliariA!: number | null;
+
+ @Column('nvarchar', {
+ name: 'descrizioneLettera',
+ nullable: true,
+ length: 80,
+ })
+ descrizioneLettera!: string | null;
+
+ @Column('int', { name: 'fdaOpzionale', nullable: true })
+ fdaOpzionale!: number | null;
+
+ @Column('int', { name: 'giorniCarenzaTesserino', nullable: true })
+ giorniCarenzaTesserino!: number | null;
+
+ @Column('ntext', { name: 'informazioni', nullable: true })
+ informazioni!: string | null;
+
+ @Column('nvarchar', {
+ name: 'denominazioneRegolamento',
+ nullable: true,
+ length: 1024,
+ default: () => "''",
+ })
+ denominazioneRegolamento!: string | null;
+
+ @Column('nvarchar', {
+ name: 'dataMassimaAdesione',
+ nullable: true,
+ length: 10,
+ default: () => "'9998-12-31'",
+ })
+ dataMassimaAdesione!: string | null;
+
+ @Column('int', { name: 'prioritaWeb', default: () => '(0)' })
+ prioritaWeb!: number;
+
+ @Column('int', { name: 'attivaDirettaAreaRiservata', default: () => '(0)' })
+ attivaDirettaAreaRiservata!: number;
+
+ @OneToMany(
+ () => SocioFormeAssistenzaEntity,
+ (socioFormeAssistenzaEntity) => socioFormeAssistenzaEntity.formaAssistenza,
+ )
+ socioFormeAssistenza!: SocioFormeAssistenzaEntity[];
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/gruppo.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/gruppo.entity.ts
new file mode 100644
index 0000000..5e7f098
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/gruppo.entity.ts
@@ -0,0 +1,658 @@
+import { Column, Entity, Index, OneToMany } from 'typeorm';
+import { EnteEntity } from './ente.entity';
+
+@Index('PK_gruppo', ['codiceGruppo'], { unique: true })
+@Entity('gruppo')
+export class GruppoEntity {
+ @Column('bigint', { primary: true, name: 'codiceGruppo' })
+ codiceGruppo!: string;
+
+ @Column('nvarchar', { name: 'gruppo', nullable: true, length: 80 })
+ gruppo!: string | null;
+
+ @Column('nvarchar', {
+ name: 'descrizioneGruppo',
+ nullable: true,
+ length: 255,
+ })
+ descrizioneGruppo!: string | null;
+
+ @Column('ntext', { name: 'noteGruppo', nullable: true })
+ noteGruppo!: string | null;
+
+ @Column('nvarchar', { name: 'referenteGruppo', nullable: true, length: 80 })
+ referenteGruppo!: string | null;
+
+ @Column('nvarchar', { name: 'telefonoReferente', nullable: true, length: 80 })
+ telefonoReferente!: string | null;
+
+ @Column('nvarchar', {
+ name: 'cellulareReferente',
+ nullable: true,
+ length: 80,
+ })
+ cellulareReferente!: string | null;
+
+ @Column('nvarchar', { name: 'emailReferente', nullable: true, length: 80 })
+ emailReferente!: string | null;
+
+ @Column('nvarchar', { name: 'indirizzoGruppo', nullable: true, length: 80 })
+ indirizzoGruppo!: string | null;
+
+ @Column('nvarchar', {
+ name: 'numeroCivicoGruppo',
+ nullable: true,
+ length: 80,
+ })
+ numeroCivicoGruppo!: string | null;
+
+ @Column('nvarchar', { name: 'capGruppo', nullable: true, length: 10 })
+ capGruppo!: string | null;
+
+ @Column('nvarchar', { name: 'localitaGruppo', nullable: true, length: 80 })
+ localitaGruppo!: string | null;
+
+ @Column('nvarchar', { name: 'telefono1Gruppo', nullable: true, length: 80 })
+ telefono1Gruppo!: string | null;
+
+ @Column('nvarchar', { name: 'telefono2Gruppo', nullable: true, length: 80 })
+ telefono2Gruppo!: string | null;
+
+ @Column('nvarchar', { name: 'faxGruppo', nullable: true, length: 80 })
+ faxGruppo!: string | null;
+
+ @Column('nvarchar', { name: 'emailGruppo', nullable: true, length: 80 })
+ emailGruppo!: string | null;
+
+ @Column('nvarchar', { name: 'sitoWebGruppo', nullable: true, length: 80 })
+ sitoWebGruppo!: string | null;
+
+ @Column('int', { name: 'gruppoAttivo', nullable: true })
+ gruppoAttivo!: number | null;
+
+ @Column('int', { name: 'esolverAttivo', nullable: true })
+ esolverAttivo!: number | null;
+
+ @Column('nvarchar', { name: 'serverEsolver', nullable: true, length: 80 })
+ serverEsolver!: string | null;
+
+ @Column('nvarchar', { name: 'databaseEsolver', nullable: true, length: 80 })
+ databaseEsolver!: string | null;
+
+ @Column('nvarchar', { name: 'usernameEsolver', nullable: true, length: 80 })
+ usernameEsolver!: string | null;
+
+ @Column('nvarchar', { name: 'passwordEsolver', nullable: true, length: 80 })
+ passwordEsolver!: string | null;
+
+ @Column('nvarchar', { name: 'gruppoEsolver', nullable: true, length: 80 })
+ gruppoEsolver!: string | null;
+
+ @Column('image', { name: 'logoGruppo', nullable: true })
+ logoGruppo!: Buffer | null;
+
+ @Column('bigint', { name: 'utenteCreazione', nullable: true })
+ utenteCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'dataCreazione', nullable: true, length: 10 })
+ dataCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'oraCreazione', nullable: true, length: 8 })
+ oraCreazione!: string | null;
+
+ @Column('bigint', { name: 'utenteModifica', nullable: true })
+ utenteModifica!: string | null;
+
+ @Column('nvarchar', { name: 'dataModifica', nullable: true, length: 10 })
+ dataModifica!: string | null;
+
+ @Column('nvarchar', { name: 'oraModifica', nullable: true, length: 8 })
+ oraModifica!: string | null;
+
+ @Column('nvarchar', { name: 'direttivaReport', nullable: true, length: 512 })
+ direttivaReport!: string | null;
+
+ @Column('nvarchar', {
+ name: 'direttivaReportPers',
+ nullable: true,
+ length: 512,
+ })
+ direttivaReportPers!: string | null;
+
+ @Column('bigint', { name: 'statoGruppo', nullable: true })
+ statoGruppo!: string | null;
+
+ @Column('bigint', { name: 'provinciaGruppo', nullable: true })
+ provinciaGruppo!: string | null;
+
+ @Column('int', { name: 'fondo', nullable: true })
+ fondo!: number | null;
+
+ @Column('decimal', {
+ name: 'tassaIscrizione',
+ nullable: true,
+ precision: 18,
+ scale: 2,
+ })
+ tassaIscrizione!: number | null;
+
+ @Column('nvarchar', { name: 'codiceFiscale', nullable: true, length: 80 })
+ codiceFiscale!: string | null;
+
+ @Column('nvarchar', { name: 'serverFTP', nullable: true, length: 200 })
+ serverFtp!: string | null;
+
+ @Column('nvarchar', { name: 'usernameFTP', nullable: true, length: 200 })
+ usernameFtp!: string | null;
+
+ @Column('nvarchar', { name: 'passwordFTP', nullable: true, length: 200 })
+ passwordFtp!: string | null;
+
+ @Column('decimal', {
+ name: 'massimalePresaCarico',
+ nullable: true,
+ precision: 18,
+ scale: 2,
+ })
+ massimalePresaCarico!: number | null;
+
+ @Column('nvarchar', { name: 'elencoLivello1', nullable: true, length: 80 })
+ elencoLivello1!: string | null;
+
+ @Column('ntext', { name: 'testoEmailPreventivo', nullable: true })
+ testoEmailPreventivo!: string | null;
+
+ @Column('nvarchar', {
+ name: 'emailPreventivoMittente',
+ nullable: true,
+ length: 80,
+ })
+ emailPreventivoMittente!: string | null;
+
+ @Column('nvarchar', {
+ name: 'emailPreventivoNotifica',
+ nullable: true,
+ length: 80,
+ })
+ emailPreventivoNotifica!: string | null;
+
+ @Column('nvarchar', {
+ name: 'desPreventivoMittente',
+ nullable: true,
+ length: 80,
+ })
+ desPreventivoMittente!: string | null;
+
+ @Column('nvarchar', {
+ name: 'desPreventivoNotifica',
+ nullable: true,
+ length: 80,
+ })
+ desPreventivoNotifica!: string | null;
+
+ @Column('bigint', { name: 'codiceContrattoIndividuali', nullable: true })
+ codiceContrattoIndividuali!: string | null;
+
+ @Column('nvarchar', {
+ name: 'codiceAziendaBollettini',
+ nullable: true,
+ length: 80,
+ })
+ codiceAziendaBollettini!: string | null;
+
+ @Column('nvarchar', { name: 'rigaTesserino1', nullable: true, length: 80 })
+ rigaTesserino1!: string | null;
+
+ @Column('nvarchar', { name: 'rigaTesserino2', nullable: true, length: 80 })
+ rigaTesserino2!: string | null;
+
+ @Column('nvarchar', { name: 'rigaTesserino3', nullable: true, length: 80 })
+ rigaTesserino3!: string | null;
+
+ @Column('nvarchar', {
+ name: 'cartellaCondivisa',
+ nullable: true,
+ length: 512,
+ })
+ cartellaCondivisa!: string | null;
+
+ @Column('nvarchar', { name: 'serverSMTP', nullable: true, length: 80 })
+ serverSmtp!: string | null;
+
+ @Column('nvarchar', { name: 'usernameSMTP', nullable: true, length: 80 })
+ usernameSmtp!: string | null;
+
+ @Column('nvarchar', { name: 'passwordSMTP', nullable: true, length: 80 })
+ passwordSmtp!: string | null;
+
+ @Column('nvarchar', { name: 'emailIBAN', nullable: true, length: 255 })
+ emailIban!: string | null;
+
+ @Column('nvarchar', { name: 'emailFatture', nullable: true, length: 255 })
+ emailFatture!: string | null;
+
+ @Column('nvarchar', { name: 'emailRA', nullable: true, length: 255 })
+ emailRa!: string | null;
+
+ @Column('nvarchar', {
+ name: 'emailAreaRiservataSoci',
+ nullable: true,
+ length: 80,
+ default: () => "''",
+ })
+ emailAreaRiservataSoci!: string | null;
+
+ @Column('nvarchar', {
+ name: 'desAreaRiservataSoci',
+ nullable: true,
+ length: 80,
+ default: () => "''",
+ })
+ desAreaRiservataSoci!: string | null;
+
+ @Column('nvarchar', {
+ name: 'usernameSMS',
+ nullable: true,
+ length: 255,
+ default: () => "''",
+ })
+ usernameSms!: string | null;
+
+ @Column('nvarchar', {
+ name: 'passwordSMS',
+ nullable: true,
+ length: 255,
+ default: () => "''",
+ })
+ passwordSms!: string | null;
+
+ @Column('nvarchar', {
+ name: 'mittenteSMS',
+ nullable: true,
+ length: 255,
+ default: () => "''",
+ })
+ mittenteSms!: string | null;
+
+ @Column('nvarchar', { name: 'sitoWebDati', length: 255, default: () => "''" })
+ sitoWebDati!: string;
+
+ @Column('nvarchar', {
+ name: 'identificativoCreditore',
+ length: 35,
+ default: () => "''",
+ })
+ identificativoCreditore!: string;
+
+ @Column('nvarchar', {
+ name: 'SMSProtocollo',
+ nullable: true,
+ length: 200,
+ default: () => "''",
+ })
+ smsProtocollo!: string | null;
+
+ @Column('nvarchar', {
+ name: 'oggettoEmailBonifico',
+ nullable: true,
+ length: 200,
+ default: () => "''",
+ })
+ oggettoEmailBonifico!: string | null;
+
+ @Column('ntext', {
+ name: 'emailBonifico',
+ nullable: true,
+ default: () => "''",
+ })
+ emailBonifico!: string | null;
+
+ @Column('ntext', {
+ name: 'emailAssegno',
+ nullable: true,
+ default: () => "''",
+ })
+ emailAssegno!: string | null;
+
+ @Column('nvarchar', {
+ name: 'oggettoEmailAssegno',
+ nullable: true,
+ length: 200,
+ default: () => "''",
+ })
+ oggettoEmailAssegno!: string | null;
+
+ @Column('nvarchar', {
+ name: 'SMSRimborsoBonifico',
+ nullable: true,
+ length: 200,
+ default: () => "''",
+ })
+ smsRimborsoBonifico!: string | null;
+
+ @Column('nvarchar', {
+ name: 'SMSRimborsoAssegno',
+ nullable: true,
+ length: 200,
+ default: () => "''",
+ })
+ smsRimborsoAssegno!: string | null;
+
+ @Column('nvarchar', { name: 'emailPIC', nullable: true, length: 255 })
+ emailPic!: string | null;
+
+ @Column('nvarchar', { name: 'stelline', length: 10, default: () => "''" })
+ stelline!: string;
+
+ @Column('nvarchar', { name: 'mittentePIC', length: 400, default: () => "''" })
+ mittentePic!: string;
+
+ @Column('ntext', { name: 'oggettoPIC', default: () => "''" })
+ oggettoPic!: string;
+
+ @Column('ntext', { name: 'messaggioPIC', default: () => "''" })
+ messaggioPic!: string;
+
+ @Column('nvarchar', {
+ name: 'nomeSupportoContrattoPosta',
+ nullable: true,
+ length: 80,
+ default: () => "''",
+ })
+ nomeSupportoContrattoPosta!: string | null;
+
+ @Column('nvarchar', {
+ name: 'codiceContrattoPosta',
+ nullable: true,
+ length: 80,
+ default: () => "''",
+ })
+ codiceContrattoPosta!: string | null;
+
+ @Column('nvarchar', {
+ name: 'passwordContrattoPosta',
+ nullable: true,
+ length: 80,
+ default: () => "''",
+ })
+ passwordContrattoPosta!: string | null;
+
+ @Column('bigint', {
+ name: 'codiceSpedizione',
+ nullable: true,
+ default: () => '(0)',
+ })
+ codiceSpedizione!: string | null;
+
+ @Column('nvarchar', {
+ name: 'oggettoEmailBonificoDomiciliato',
+ nullable: true,
+ length: 200,
+ default: () => "''",
+ })
+ oggettoEmailBonificoDomiciliato!: string | null;
+
+ @Column('ntext', {
+ name: 'emailBonificoDomiciliato',
+ nullable: true,
+ default: () => "''",
+ })
+ emailBonificoDomiciliato!: string | null;
+
+ @Column('nvarchar', {
+ name: 'SMSRimborsoBonificoDomiciliato',
+ nullable: true,
+ length: 200,
+ default: () => "''",
+ })
+ smsRimborsoBonificoDomiciliato!: string | null;
+
+ @Column('int', { name: 'notifichePush', default: () => '(0)' })
+ notifichePush!: number;
+
+ @Column('int', { name: 'controlloCodiceFiscale', default: () => '(-1)' })
+ controlloCodiceFiscale!: number;
+
+ @Column('ntext', { name: 'emailSuperamentoPIC', default: () => "''" })
+ emailSuperamentoPic!: string;
+
+ @Column('nvarchar', {
+ name: 'SMSProtocolloNotificaEsplicita',
+ length: 200,
+ default: () => "''",
+ })
+ smsProtocolloNotificaEsplicita!: string;
+
+ @Column('nvarchar', {
+ name: 'mittenteSportello',
+ length: 200,
+ default: () => "''",
+ })
+ mittenteSportello!: string;
+
+ @Column('nvarchar', {
+ name: 'oggettoEmailBonificoDomiciliatoSportello',
+ length: 200,
+ default: () => "''",
+ })
+ oggettoEmailBonificoDomiciliatoSportello!: string;
+
+ @Column('ntext', {
+ name: 'emailBonificoDomiciliatoSportello',
+ default: () => "''",
+ })
+ emailBonificoDomiciliatoSportello!: string;
+
+ @Column('nvarchar', {
+ name: 'oggettoEmailBonificoSportello',
+ length: 200,
+ default: () => "''",
+ })
+ oggettoEmailBonificoSportello!: string;
+
+ @Column('ntext', { name: 'emailBonificoSportello', default: () => "''" })
+ emailBonificoSportello!: string;
+
+ @Column('nvarchar', {
+ name: 'oggettoEmailSospensioneSportello',
+ length: 200,
+ default: () => "''",
+ })
+ oggettoEmailSospensioneSportello!: string;
+
+ @Column('ntext', { name: 'emailSospensioneSportello', default: () => "''" })
+ emailSospensioneSportello!: string;
+
+ @Column('nvarchar', {
+ name: 'oggettoEmailRespingimentoSportello',
+ length: 200,
+ default: () => "''",
+ })
+ oggettoEmailRespingimentoSportello!: string;
+
+ @Column('ntext', { name: 'emailRespingimentoSportello', default: () => "''" })
+ emailRespingimentoSportello!: string;
+
+ @Column('nvarchar', {
+ name: 'oggettoEmailSospensione',
+ length: 200,
+ default: () => "''",
+ })
+ oggettoEmailSospensione!: string;
+
+ @Column('ntext', { name: 'emailSospensione', default: () => "''" })
+ emailSospensione!: string;
+
+ @Column('nvarchar', {
+ name: 'oggettoEmailRespingimento',
+ length: 200,
+ default: () => "''",
+ })
+ oggettoEmailRespingimento!: string;
+
+ @Column('ntext', { name: 'emailRespingimento', default: () => "''" })
+ emailRespingimento!: string;
+
+ @Column('nvarchar', {
+ name: 'mittentePICdisdetta',
+ nullable: true,
+ length: 400,
+ })
+ mittentePiCdisdetta!: string | null;
+
+ @Column('ntext', { name: 'oggettoPICdisdetta', nullable: true })
+ oggettoPiCdisdetta!: string | null;
+
+ @Column('ntext', { name: 'messaggioPICdisdetta', nullable: true })
+ messaggioPiCdisdetta!: string | null;
+
+ @Column('int', { name: 'modalitaMassimaleBonifico', default: () => '(0)' })
+ modalitaMassimaleBonifico!: number;
+
+ @Column('nvarchar', { name: 'portaSMTP', length: 10, default: () => "''" })
+ portaSmtp!: string;
+
+ @Column('int', { name: 'useSSL', default: () => '(0)' })
+ useSsl!: number;
+
+ @Column('nvarchar', {
+ name: 'serverSMTPSpot',
+ length: 200,
+ default: () => "''",
+ })
+ serverSmtpSpot!: string;
+
+ @Column('nvarchar', {
+ name: 'usernameSMTPSpot',
+ length: 200,
+ default: () => "''",
+ })
+ usernameSmtpSpot!: string;
+
+ @Column('nvarchar', {
+ name: 'passwordSMTPSpot',
+ length: 200,
+ default: () => "''",
+ })
+ passwordSmtpSpot!: string;
+
+ @Column('nvarchar', {
+ name: 'portaSMTPSpot',
+ length: 10,
+ default: () => "''",
+ })
+ portaSmtpSpot!: string;
+
+ @Column('int', { name: 'useSSLSpot', default: () => '(0)' })
+ useSslSpot!: number;
+
+ @Column('nvarchar', {
+ name: 'cartellaPubblicazioneLocale',
+ length: 512,
+ default: () => "''",
+ })
+ cartellaPubblicazioneLocale!: string;
+
+ @Column('int', { name: 'portaFTP', default: () => '(0)' })
+ portaFtp!: number;
+
+ @Column('nvarchar', {
+ name: 'cartellaAllegatiFTP',
+ length: 200,
+ default: () => "''",
+ })
+ cartellaAllegatiFtp!: string;
+
+ @Column('nvarchar', {
+ name: 'mittentiEmailNotificaEmissioneRimborsoSocio',
+ nullable: true,
+ length: 80,
+ })
+ mittentiEmailNotificaEmissioneRimborsoSocio!: string | null;
+
+ @Column('nvarchar', {
+ name: 'mittentiEmailInvioAllegatiPraticaSocio',
+ nullable: true,
+ length: 80,
+ })
+ mittentiEmailInvioAllegatiPraticaSocio!: string | null;
+
+ @Column('nvarchar', {
+ name: 'mittentiEmailRichiestaDatiBancariSocio',
+ nullable: true,
+ length: 80,
+ })
+ mittentiEmailRichiestaDatiBancariSocio!: string | null;
+
+ @Column('nvarchar', {
+ name: 'mittentiEmailLettereRichiestaContributiRinnoviIndividuali',
+ nullable: true,
+ length: 80,
+ })
+ mittentiEmailLettereRichiestaContributiRinnoviIndividuali!: string | null;
+
+ @Column('nvarchar', {
+ name: 'mittentiEmailLettereSoci',
+ nullable: true,
+ length: 80,
+ })
+ mittentiEmailLettereSoci!: string | null;
+
+ @Column('nvarchar', {
+ name: 'mittentiEmailLettereStrutture',
+ nullable: true,
+ length: 80,
+ })
+ mittentiEmailLettereStrutture!: string | null;
+
+ @Column('nvarchar', {
+ name: 'mittentiEmailLettereContratti',
+ nullable: true,
+ length: 80,
+ })
+ mittentiEmailLettereContratti!: string | null;
+
+ @Column('nvarchar', {
+ name: 'emailNotificaCodiciFiscaliDoppiMittente',
+ nullable: true,
+ length: 80,
+ })
+ emailNotificaCodiciFiscaliDoppiMittente!: string | null;
+
+ @Column('nvarchar', {
+ name: 'emailNotificaCodiciFiscaliDoppiDestinatari',
+ nullable: true,
+ length: 80,
+ })
+ emailNotificaCodiciFiscaliDoppiDestinatari!: string | null;
+
+ @Column('nvarchar', {
+ name: 'emailNotificaCodiciFiscaliDoppiCc',
+ nullable: true,
+ length: 200,
+ })
+ emailNotificaCodiciFiscaliDoppiCc!: string | null;
+
+ @Column('nvarchar', {
+ name: 'oggettoEmailRichiestaDatiBancari',
+ length: 200,
+ default: () => "''",
+ })
+ oggettoEmailRichiestaDatiBancari!: string;
+
+ @Column('ntext', { name: 'emailRichiestaDatiBancari', default: () => "''" })
+ emailRichiestaDatiBancari!: string;
+
+ @Column('int', {
+ name: 'flagAllegaModuloIbanEmailRichiestaDatiBancari',
+ nullable: true,
+ })
+ flagAllegaModuloIbanEmailRichiestaDatiBancari!: number | null;
+
+ @OneToMany(() => EnteEntity, (enteEntity) => enteEntity.gruppo)
+ enti!: EnteEntity[];
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/index.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/index.ts
new file mode 100644
index 0000000..9cc8781
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/index.ts
@@ -0,0 +1,13 @@
+export * from './API_CAP_Luoghi.entity';
+export * from './API_Luoghi.entity';
+export * from './API_Luoghi_Estero.entity';
+export * from './allegati.entity';
+export * from './contratto.entity';
+export * from './ente.entity';
+export * from './formeAssistenza.entity';
+export * from './gruppo.entity';
+export * from './missioni.entity';
+export * from './socio.entity';
+export * from './socioContratto.entity';
+export * from './socioFormeAssistenza.entity';
+export * from './sportelli.entity';
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/missioni.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/missioni.entity.ts
new file mode 100644
index 0000000..65f0a31
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/missioni.entity.ts
@@ -0,0 +1,53 @@
+import { Column, Entity, Index } from 'typeorm';
+
+@Index(
+ 'PK_Missioni_Data',
+ [
+ 'codiceFiscale',
+ 'tipoDocumento',
+ 'idMissione',
+ 'idLettera',
+ 'idPratica',
+ 'idAgenzia',
+ 'dataInizio',
+ 'dataFine',
+ 'tipoContratto',
+ ],
+ { unique: true },
+)
+@Entity('missioni')
+export class MissioniEntity {
+ @Column('nvarchar', { primary: true, name: 'codiceFiscale', length: 20 })
+ codiceFiscale!: string;
+
+ @Column('bigint', { primary: true, name: 'tipoDocumento' })
+ tipoDocumento!: string;
+
+ @Column('bigint', { primary: true, name: 'idMissione' })
+ idMissione!: string;
+
+ @Column('bigint', { primary: true, name: 'idLettera' })
+ idLettera!: string;
+
+ @Column('bigint', { primary: true, name: 'idPratica' })
+ idPratica!: string;
+
+ @Column('bigint', { primary: true, name: 'idAgenzia' })
+ idAgenzia!: string;
+
+ @Column('nvarchar', { primary: true, name: 'dataInizio', length: 10 })
+ dataInizio!: string;
+
+ @Column('nvarchar', { primary: true, name: 'dataFine', length: 10 })
+ dataFine!: string;
+
+ @Column('nvarchar', { primary: true, name: 'tipoContratto', length: 20 })
+ tipoContratto!: string;
+
+ @Column('bigint', { name: 'progressivoRecord', default: () => '(0)' })
+ progressivoRecord!: string;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/socio.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/socio.entity.ts
new file mode 100644
index 0000000..aed0c29
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/socio.entity.ts
@@ -0,0 +1,651 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
+import { ApiLuoghiEntity } from './API_Luoghi.entity';
+import { GruppoEntity } from './gruppo.entity';
+import { SocioContrattoEntity } from './socioContratto.entity';
+import { SocioFormeAssistenzaEntity } from './socioFormeAssistenza.entity';
+
+@Index('PK_socio', ['codiceSocio'], { unique: true })
+@Entity('socio')
+export class SocioEntity {
+ @Column('bigint', { name: 'codiceGruppo', nullable: true })
+ codiceGruppo!: string | null;
+
+ @Column('bigint', { primary: true, name: 'codiceSocio' })
+ codiceSocio!: string;
+
+ @Column('bigint', { name: 'matricolaSocio', nullable: true })
+ matricolaSocio!: string | null;
+
+ @Column('nvarchar', { name: 'cognome', nullable: true, length: 80 })
+ cognome!: string | null;
+
+ @Column('nvarchar', { name: 'nome', nullable: true, length: 80 })
+ nome!: string | null;
+
+ @Column('nvarchar', { name: 'dataNascita', nullable: true, length: 10 })
+ dataNascita!: string | null;
+
+ @Column('nvarchar', { name: 'codiceFiscale', nullable: true, length: 20 })
+ codiceFiscale!: string | null;
+
+ @Column('bigint', { name: 'codiceContrattoOld', nullable: true })
+ codiceContrattoOld!: string | null;
+
+ @Column('bigint', { name: 'socio.codiceFiguraContrattoOld', nullable: true })
+ socioCodiceFiguraContrattoOld!: string | null;
+
+ @Column('bigint', { name: 'codiceRivenditore', nullable: true })
+ codiceRivenditore!: string | null;
+
+ @Column('bigint', { name: 'utenteCreazione', nullable: true })
+ utenteCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'dataCreazione', nullable: true, length: 10 })
+ dataCreazione!: string | null;
+
+ @Column('nvarchar', { name: 'oraCreazione', nullable: true, length: 8 })
+ oraCreazione!: string | null;
+
+ @Column('bigint', { name: 'utenteModifica', nullable: true })
+ utenteModifica!: string | null;
+
+ @Column('nvarchar', { name: 'dataModifica', nullable: true, length: 10 })
+ dataModifica!: string | null;
+
+ @Column('nvarchar', { name: 'oraModifica', nullable: true, length: 8 })
+ oraModifica!: string | null;
+
+ @Column('nvarchar', {
+ name: 'residenzaIndirizzo',
+ nullable: true,
+ length: 80,
+ })
+ residenzaIndirizzo!: string | null;
+
+ @Column('nvarchar', {
+ name: 'residenzaNumeroCivico',
+ nullable: true,
+ length: 80,
+ })
+ residenzaNumeroCivico!: string | null;
+
+ @Column('nvarchar', { name: 'residenzaLocalita', nullable: true, length: 80 })
+ residenzaLocalita!: string | null;
+
+ @Column('nvarchar', { name: 'residenzaCAP', nullable: true, length: 10 })
+ residenzaCap!: string | null;
+
+ @Column('bigint', { name: 'residenzaProvincia', nullable: true })
+ residenzaProvincia!: string | null;
+
+ @Column('bigint', { name: 'residenzaStato', nullable: true })
+ residenzaStato!: string | null;
+
+ @Column('nvarchar', {
+ name: 'domicilioIndirizzo',
+ nullable: true,
+ length: 80,
+ })
+ domicilioIndirizzo!: string | null;
+
+ @Column('nvarchar', {
+ name: 'domicilioNumeroCivico',
+ nullable: true,
+ length: 80,
+ })
+ domicilioNumeroCivico!: string | null;
+
+ @Column('nvarchar', { name: 'domicilioLocalita', nullable: true, length: 80 })
+ domicilioLocalita!: string | null;
+
+ @Column('nvarchar', { name: 'domicilioCAP', nullable: true, length: 10 })
+ domicilioCap!: string | null;
+
+ @Column('bigint', { name: 'domicilioProvincia', nullable: true })
+ domicilioProvincia!: string | null;
+
+ @Column('bigint', { name: 'domicilioStato', nullable: true })
+ domicilioStato!: string | null;
+
+ @Column('nvarchar', { name: 'nascitaLocalita', nullable: true, length: 80 })
+ nascitaLocalita!: string | null;
+
+ @Column('nvarchar', { name: 'nascitaCAP', nullable: true, length: 10 })
+ nascitaCap!: string | null;
+
+ @Column('bigint', { name: 'nascitaProvincia', nullable: true })
+ nascitaProvincia!: string | null;
+
+ @Column('bigint', { name: 'nascitaStato', nullable: true })
+ nascitaStato!: string | null;
+
+ @Column('nvarchar', { name: 'telefono', nullable: true, length: 80 })
+ telefono!: string | null;
+
+ @Column('nvarchar', { name: 'cellulare', nullable: true, length: 80 })
+ cellulare!: string | null;
+
+ @Column('nvarchar', { name: 'email', nullable: true, length: 80 })
+ email!: string | null;
+
+ @Column('bigint', { name: 'codiceSesso', nullable: true })
+ codiceSesso!: string | null;
+
+ @Column('bigint', { name: 'codiceStatoCivile', nullable: true })
+ codiceStatoCivile!: string | null;
+
+ @Column('bigint', { name: 'codiceProfessione', nullable: true })
+ codiceProfessione!: string | null;
+
+ @Column('int', { name: 'consensoComunicazioneDati', nullable: true })
+ consensoComunicazioneDati!: number | null;
+
+ @Column('int', { name: 'consensoDiffusioneDati', nullable: true })
+ consensoDiffusioneDati!: number | null;
+
+ @Column('int', { name: 'riassicurato', nullable: true })
+ riassicurato!: number | null;
+
+ @Column('nvarchar', { name: 'fax', nullable: true, length: 80 })
+ fax!: string | null;
+
+ @Column('nvarchar', { name: 'dataIscrizione', nullable: true, length: 10 })
+ dataIscrizione!: string | null;
+
+ @Column('nvarchar', {
+ name: 'dataRichiestaRecesso',
+ nullable: true,
+ length: 10,
+ })
+ dataRichiestaRecesso!: string | null;
+
+ @Column('nvarchar', { name: 'dataRecesso', nullable: true, length: 10 })
+ dataRecesso!: string | null;
+
+ @Column('int', { name: 'recessoAnnoSolareSuccessivo', nullable: true })
+ recessoAnnoSolareSuccessivo!: number | null;
+
+ @Column('int', { name: 'capofamiglia', nullable: true })
+ flagCapofamiglia!: number | null;
+
+ @Column('bigint', { name: 'livelloFamiliare', nullable: true })
+ livelloFamiliare!: string | null;
+
+ @Column('bigint', { name: 'codiceCapofamiglia', nullable: true })
+ codiceCapofamiglia!: string | null;
+
+ @Column('nvarchar', { name: 'codicePaese', nullable: true, length: 50 })
+ codicePaese!: string | null;
+
+ @Column('nvarchar', { name: 'codiceCIN', nullable: true, length: 50 })
+ codiceCin!: string | null;
+
+ @Column('nvarchar', { name: 'checkDigitCIN', nullable: true, length: 50 })
+ checkDigitCin!: string | null;
+
+ @Column('nvarchar', { name: 'rifBancaEstero', nullable: true, length: 50 })
+ rifBancaEstero!: string | null;
+
+ @Column('nvarchar', { name: 'contoCorrente', nullable: true, length: 50 })
+ contoCorrente!: string | null;
+
+ @Column('nvarchar', { name: 'codiceBIC', nullable: true, length: 50 })
+ codiceBic!: string | null;
+
+ @Column('nvarchar', { name: 'codiceIBAN', nullable: true, length: 50 })
+ codiceIban!: string | null;
+
+ @Column('nvarchar', { name: 'codiceABI', nullable: true, length: 50 })
+ codiceAbi!: string | null;
+
+ @Column('nvarchar', { name: 'codiceCAB', nullable: true, length: 10 })
+ codiceCab!: string | null;
+
+ @Column('nvarchar', { name: 'dataDecesso', nullable: true, length: 10 })
+ dataDecesso!: string | null;
+
+ @Column('int', { name: 'modalitaSuddivisioneContributi', nullable: true })
+ modalitaSuddivisioneContributi!: number | null;
+
+ @Column('nvarchar', { name: 'dataEsclusione', nullable: true, length: 10 })
+ dataEsclusione!: string | null;
+
+ @Column('bigint', { name: 'codiceMotivoEsclusione', nullable: true })
+ codiceMotivoEsclusione!: string | null;
+
+ @Column('ntext', { name: 'noteEsclusione', nullable: true })
+ noteEsclusione!: string | null;
+
+ @Column('nvarchar', { name: 'usernameWEB', nullable: true, length: 80 })
+ usernameWeb!: string | null;
+
+ @Column('nvarchar', { name: 'passwordWEB', nullable: true, length: 80 })
+ passwordWeb!: string | null;
+
+ @Column('int', { name: 'consensoNucleoFamiliare', nullable: true })
+ consensoNucleoFamiliare!: number | null;
+
+ @Column('int', { name: 'webAccessoDisabilitato', nullable: true })
+ webAccessoDisabilitato!: number | null;
+
+ @Column('int', { name: 'webModificaDati', nullable: true })
+ webModificaDati!: number | null;
+
+ @Column('int', { name: 'webInfo', nullable: true })
+ webInfo!: number | null;
+
+ @Column('int', { name: 'webStrutture', nullable: true })
+ webStrutture!: number | null;
+
+ @Column('int', { name: 'webPratiche', nullable: true })
+ webPratiche!: number | null;
+
+ @Column('int', { name: 'webCertificazione', nullable: true })
+ webCertificazione!: number | null;
+
+ @Column('int', { name: 'webRimborsiBase', nullable: true })
+ webRimborsiBase!: number | null;
+
+ @Column('int', { name: 'webRimborsiAvanzato', nullable: true })
+ webRimborsiAvanzato!: number | null;
+
+ @Column('int', { name: 'webRichiestaPresaCarico', nullable: true })
+ webRichiestaPresaCarico!: number | null;
+
+ @Column('int', { name: 'webServizioCup', nullable: true })
+ webServizioCup!: number | null;
+
+ @Column('int', { name: 'webEmailUsername', nullable: true })
+ webEmailUsername!: number | null;
+
+ @Column('bigint', { name: 'categoria1', nullable: true })
+ categoria1!: string | null;
+
+ @Column('bigint', { name: 'categoria2', nullable: true })
+ categoria2!: string | null;
+
+ @Column('bigint', { name: 'categoria3', nullable: true })
+ categoria3!: string | null;
+
+ @Column('bigint', { name: 'categoria4', nullable: true })
+ categoria4!: string | null;
+
+ @Column('bigint', { name: 'categoria5', nullable: true })
+ categoria5!: string | null;
+
+ @Column('int', { name: 'socioEsterno', nullable: true })
+ socioEsterno!: number | null;
+
+ @Column('bigint', { name: 'codiceMutua', nullable: true })
+ codiceMutua!: string | null;
+
+ @Column('nvarchar', {
+ name: 'dataInizioValidita',
+ nullable: true,
+ length: 10,
+ })
+ dataInizioValidita!: string | null;
+
+ @Column('nvarchar', { name: 'dataFineValidita', nullable: true, length: 10 })
+ dataFineValidita!: string | null;
+
+ @Column('bigint', { name: 'idAssiBase', nullable: true })
+ idAssiBase!: string | null;
+
+ @Column('nvarchar', {
+ name: 'protezioniAssiBase',
+ nullable: true,
+ length: 80,
+ })
+ protezioniAssiBase!: string | null;
+
+ @Column('nvarchar', { name: 'gruppoAssiBase', nullable: true, length: 80 })
+ gruppoAssiBase!: string | null;
+
+ @Column('ntext', { name: 'noteAnagrafica', nullable: true })
+ noteAnagrafica!: string | null;
+
+ @Column('bigint', { name: 'tipoSocio', nullable: true })
+ tipoSocio!: string | null;
+
+ @Column('int', { name: 'stampatoLibroSoci', default: () => '(0)' })
+ stampatoLibroSoci!: number;
+
+ @Column('nvarchar', {
+ name: 'dataStampaLibroSoci',
+ nullable: true,
+ length: 10,
+ })
+ dataStampaLibroSoci!: string | null;
+
+ @Column('int', { name: 'codiceModalitaPagamentoRimborsi', nullable: true })
+ codiceModalitaPagamentoRimborsi!: number | null;
+
+ @Column('int', { name: 'codiceModalitaVersamentoContributi', nullable: true })
+ codiceModalitaVersamentoContributi!: number | null;
+
+ @Column('nvarchar', { name: 'dataAssunzione', nullable: true, length: 10 })
+ dataAssunzione!: string | null;
+
+ @Column('bigint', { name: 'codiceMotivoRecesso', nullable: true })
+ codiceMotivoRecesso!: string | null;
+
+ @Column('int', { name: 'codiceCanaleComunicazione', nullable: true })
+ codiceCanaleComunicazione!: number | null;
+
+ @Column('nvarchar', { name: 'dataRegistrazione', nullable: true, length: 10 })
+ dataRegistrazione!: string | null;
+
+ @Column('ntext', { name: 'noteAnamnesi', nullable: true })
+ noteAnamnesi!: string | null;
+
+ @Column('bigint', {
+ name: 'codiceModalitacessazioneContributiInfrannuale',
+ nullable: true,
+ })
+ codiceModalitacessazioneContributiInfrannuale!: string | null;
+
+ @Column('int', {
+ name: 'forzaCodiceModalitacessazioneContributiInfrannuale',
+ nullable: true,
+ })
+ forzaCodiceModalitacessazioneContributiInfrannuale!: number | null;
+
+ @Column('nvarchar', {
+ name: 'matricolaAziendale',
+ nullable: true,
+ length: 80,
+ })
+ matricolaAziendale!: string | null;
+
+ @Column('int', { name: 'coniugeCarico', nullable: true })
+ coniugeCarico!: number | null;
+
+ @Column('ntext', { name: 'noteProtezioni', nullable: true })
+ noteProtezioni!: string | null;
+
+ @Column('bigint', { name: 'idNucleo', nullable: true })
+ idNucleo!: string | null;
+
+ @Column('bigint', { name: 'idSocio', nullable: true })
+ idSocio!: string | null;
+
+ @Column('bigint', { name: 'idLibroSoci', nullable: true })
+ idLibroSoci!: string | null;
+
+ @Column('bigint', { name: 'idPersona', nullable: true })
+ idPersona!: string | null;
+
+ @Column('bigint', { name: 'codicePromoter', nullable: true })
+ codicePromoter!: string | null;
+
+ @Column('bigint', { name: 'originePromoter', nullable: true })
+ originePromoter!: string | null;
+
+ @Column('bigint', { name: 'livelloFamiliareAnagrafica', nullable: true })
+ livelloFamiliareAnagrafica!: string | null;
+
+ @Column('bigint', { name: 'codiceCapoFamigliaAnagrafica', nullable: true })
+ codiceCapoFamigliaAnagrafica!: string | null;
+
+ @Column('int', { name: 'codiceModalitaVersamentoRID', nullable: true })
+ codiceModalitaVersamentoRid!: number | null;
+
+ @Column('nvarchar', {
+ name: 'dataPossibileAmmissione',
+ nullable: true,
+ length: 10,
+ })
+ dataPossibileAmmissione!: string | null;
+
+ @Column('nvarchar', { name: 'banca', nullable: true, length: 255 })
+ banca!: string | null;
+
+ @Column('nvarchar', { name: 'agenziaBanca', nullable: true, length: 255 })
+ agenziaBanca!: string | null;
+
+ @Column('nvarchar', { name: 'intestazioneCC', nullable: true, length: 255 })
+ intestazioneCc!: string | null;
+
+ @Column('nvarchar', {
+ name: 'dataRicezioneRichiestaRecesso',
+ nullable: true,
+ length: 10,
+ })
+ dataRicezioneRichiestaRecesso!: string | null;
+
+ @Column('nvarchar', { name: 'dataUscitaNucleo', nullable: true, length: 10 })
+ dataUscitaNucleo!: string | null;
+
+ @Column('int', { name: 'datiBancariDaAggiornare', nullable: true })
+ datiBancariDaAggiornare!: number | null;
+
+ @Column('nvarchar', { name: 'telefono2', nullable: true, length: 80 })
+ telefono2!: string | null;
+
+ @Column('nvarchar', {
+ name: 'dataModificaIban',
+ nullable: true,
+ length: 10,
+ default: () => "''",
+ })
+ dataModificaIban!: string | null;
+
+ @Column('int', {
+ name: 'richiestoIBAN',
+ nullable: true,
+ default: () => '(0)',
+ })
+ richiestoIban!: number | null;
+
+ @Column('nvarchar', {
+ name: 'dataRichiestaIBAN',
+ nullable: true,
+ length: 10,
+ default: () => "''",
+ })
+ dataRichiestaIban!: string | null;
+
+ @Column('int', { name: 'comunicazioniViaEmail', nullable: true })
+ comunicazioniViaEmail!: number | null;
+
+ @Column('int', { name: 'esitoUltimaValidazione', nullable: true })
+ esitoUltimaValidazione!: number | null;
+
+ @Column('nvarchar', {
+ name: 'dataOraUltimaValidazione',
+ nullable: true,
+ length: 50,
+ })
+ dataOraUltimaValidazione!: string | null;
+
+ @Column('ntext', { name: 'noteUltimaValidazione', nullable: true })
+ noteUltimaValidazione!: string | null;
+
+ @Column('int', { name: 'stampareLibroSoci', default: () => '(0)' })
+ stampareLibroSoci!: number;
+
+ @Column('nvarchar', {
+ name: 'dataStampaCessazioneLibroSoci',
+ nullable: true,
+ length: 10,
+ default: () => "'9998-12-31'",
+ })
+ dataStampaCessazioneLibroSoci!: string | null;
+
+ @Column('int', {
+ name: 'stampataCessazioneLibroSoci',
+ nullable: true,
+ default: () => '(0)',
+ })
+ stampataCessazioneLibroSoci!: number | null;
+
+ @Column('int', { name: 'adesioneWeb', default: () => '(0)' })
+ adesioneWeb!: number;
+
+ @Column('int', { name: 'preeesistenzaContratto', default: () => '(0)' })
+ preeesistenzaContratto!: number;
+
+ @Column('int', { name: 'preeesistenzaInclusa', default: () => '(0)' })
+ preeesistenzaInclusa!: number;
+
+ @Column('nvarchar', { name: 'IBANRid', length: 50, default: () => "''" })
+ ibanRid!: string;
+
+ @Column('nvarchar', {
+ name: 'intestatarioContoRid',
+ length: 255,
+ default: () => "''",
+ })
+ intestatarioContoRid!: string;
+
+ @Column('nvarchar', {
+ name: 'dataMandato',
+ length: 10,
+ default: () => "'9998-12-31'",
+ })
+ dataMandato!: string;
+
+ @Column('nvarchar', { name: 'idMandato', length: 10, default: () => "''" })
+ idMandato!: string;
+
+ @Column('nvarchar', { name: 'codiceSWIFT', length: 80, default: () => "''" })
+ codiceSwift!: string;
+
+ @Column('decimal', {
+ name: 'percentualeFamiliareACarico',
+ precision: 18,
+ scale: 2,
+ default: () => '(0)',
+ })
+ percentualeFamiliareACarico!: number;
+
+ @Column('int', { name: 'familiareMultiplo', default: () => '(0)' })
+ familiareMultiplo!: number;
+
+ @Column('nvarchar', {
+ name: 'origineAggiornamento',
+ length: 20,
+ default: () => "''",
+ })
+ origineAggiornamento!: string;
+
+ @Column('int', { name: 'consensoNewsletter', default: () => '(0)' })
+ consensoNewsletter!: number;
+
+ @Column('int', {
+ name: 'flagRichiestaVariazioneAnagrafica',
+ default: () => '(0)',
+ })
+ flagRichiestaVariazioneAnagrafica!: number;
+
+ @Column('int', { name: 'flagPresenzaMorositaPrestiti', default: () => '(0)' })
+ flagPresenzaMorositaPrestiti!: number;
+
+ @Column('int', { name: 'flagBloccoAmministrativo', default: () => '(0)' })
+ flagBloccoAmministrativo!: number;
+
+ @Column('int', { name: 'codiceTitoloStudio', default: () => '(0)' })
+ codiceTitoloStudio!: number;
+
+ @Column('varchar', {
+ name: 'codiceLuogoDomicilio',
+ nullable: true,
+ length: 5,
+ })
+ codiceLuogoDomicilio!: string | null;
+
+ @Column('varchar', { name: 'codiceLuogoNascita', nullable: true, length: 5 })
+ codiceLuogoNascita!: string | null;
+
+ @Column('varchar', {
+ name: 'codiceLuogoResidenza',
+ nullable: true,
+ length: 5,
+ })
+ codiceLuogoResidenza!: string | null;
+
+ @Column('nvarchar', { name: 'domicilioFrazione', nullable: true, length: 80 })
+ domicilioFrazione!: string | null;
+
+ @Column('nvarchar', { name: 'nascitaFrazione', nullable: true, length: 80 })
+ nascitaFrazione!: string | null;
+
+ @Column('nvarchar', { name: 'residenzaFrazione', nullable: true, length: 80 })
+ residenzaFrazione!: string | null;
+
+ @Column('varchar', { name: 'codicePartner', nullable: true, length: 255 })
+ codicePartner!: string | null;
+
+ @Column('varchar', {
+ name: 'documentoIdentitaCodice',
+ nullable: true,
+ length: 100,
+ })
+ documentoIdentitaCodice!: string | null;
+
+ @Column('varchar', {
+ name: 'documentoIdentitaDataEmissione',
+ nullable: true,
+ length: 10,
+ })
+ documentoIdentitaDataEmissione!: string | null;
+
+ @Column('varchar', {
+ name: 'documentoIdentitaDataScadenza',
+ nullable: true,
+ length: 10,
+ })
+ documentoIdentitaDataScadenza!: string | null;
+
+ @Column('varchar', {
+ name: 'documentoIdentitaEnteRilascio',
+ nullable: true,
+ length: 100,
+ })
+ documentoIdentitaEnteRilascio!: string | null;
+
+ @Column('varchar', {
+ name: 'documentoIdentitaComuneRilascio',
+ nullable: true,
+ length: 5,
+ })
+ documentoIdentitaCodiceLuogoComuneRilascio!: string | null;
+
+ @ManyToOne(() => SocioEntity, (socioEntity) => socioEntity.familiari)
+ @JoinColumn([{ name: 'codiceCapofamiglia', referencedColumnName: 'codiceSocio' }])
+ capofamiglia!: SocioEntity;
+
+ @OneToMany(() => SocioEntity, (socioEntity) => socioEntity.capofamiglia)
+ familiari!: SocioEntity[];
+
+ @ManyToOne(() => GruppoEntity)
+ @JoinColumn([{ name: 'codiceGruppo', referencedColumnName: 'codiceGruppo' }])
+ gruppo!: GruppoEntity;
+
+ @ManyToOne(() => ApiLuoghiEntity)
+ @JoinColumn([{ name: 'codiceLuogoNascita', referencedColumnName: 'codice' }])
+ luogoNascita!: ApiLuoghiEntity;
+
+ @ManyToOne(() => ApiLuoghiEntity)
+ @JoinColumn([{ name: 'codiceLuogoResidenza', referencedColumnName: 'codice' }])
+ luogoResidenza!: ApiLuoghiEntity;
+
+ @ManyToOne(() => ApiLuoghiEntity)
+ @JoinColumn([{ name: 'codiceLuogoDomicilio', referencedColumnName: 'codice' }])
+ luogoDomicilio!: ApiLuoghiEntity;
+
+ @ManyToOne(() => ApiLuoghiEntity)
+ @JoinColumn([{ name: 'documentoIdentitaComuneRilascio', referencedColumnName: 'codice' }])
+ documentoIdentitaComuneRilascio!: ApiLuoghiEntity;
+
+ @OneToMany(() => SocioContrattoEntity, (socioContrattoEntity) => socioContrattoEntity.socio)
+ socioContratto!: SocioContrattoEntity[];
+
+ @OneToMany(() => SocioFormeAssistenzaEntity, (socioFormeAssistenzaEntity) => socioFormeAssistenzaEntity.socio)
+ socioFormeAssistenzas!: SocioFormeAssistenzaEntity[];
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/socioContratto.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/socioContratto.entity.ts
new file mode 100644
index 0000000..f31bafc
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/socioContratto.entity.ts
@@ -0,0 +1,50 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm';
+import { ContrattoEntity } from './contratto.entity';
+import { SocioEntity } from './socio.entity';
+
+@Index(
+ 'PK_socioContratto',
+ ['codiceSocio', 'codiceCapofamiglia', 'codiceContratto', 'dataInizio', 'dataFine', 'codiceFiguraContratto'],
+ { unique: true },
+)
+@Entity('socioContratto')
+export class SocioContrattoEntity {
+ @Column('bigint', { primary: true, name: 'codiceSocio' })
+ codiceSocio!: string;
+
+ @Column('bigint', { primary: true, name: 'codiceCapofamiglia' })
+ codiceCapofamiglia!: string;
+
+ @Column('nvarchar', { primary: true, name: 'dataInizio', length: 10 })
+ dataInizio!: string;
+
+ @Column('nvarchar', { primary: true, name: 'dataFine', length: 10 })
+ dataFine!: string;
+
+ @Column('bigint', { primary: true, name: 'codiceContratto' })
+ codiceContratto!: string;
+
+ @Column('nvarchar', { name: 'contratto', length: 400 })
+ nomeContratto!: string;
+
+ @Column('bigint', { primary: true, name: 'codiceFiguraContratto' })
+ codiceFiguraContratto!: string;
+
+ @Column('nvarchar', { name: 'figuraContratto', length: 400 })
+ figuraContratto!: string;
+
+ @Column('nvarchar', { name: 'note', length: 400 })
+ note!: string;
+
+ @ManyToOne(() => SocioEntity, (socioEntity) => socioEntity.socioContratto)
+ @JoinColumn([{ name: 'codiceSocio', referencedColumnName: 'codiceSocio' }])
+ socio!: SocioEntity;
+
+ @ManyToOne(() => ContrattoEntity, (contrattoEntity) => contrattoEntity.socioContratto)
+ @JoinColumn([{ name: 'codiceContratto', referencedColumnName: 'codiceContratto' }])
+ contratto!: ContrattoEntity;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/socioFormeAssistenza.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/socioFormeAssistenza.entity.ts
new file mode 100644
index 0000000..77337ef
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/socioFormeAssistenza.entity.ts
@@ -0,0 +1,46 @@
+import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm';
+import { FormeAssistenzaEntity } from './formeAssistenza.entity';
+import { SocioEntity } from './socio.entity';
+
+@Index('PK_socioFormeAssistenza', ['codiceSocio', 'codiceFdA', 'dataInizio', 'dataFine', 'titolare'], { unique: true })
+@Entity('socioFormeAssistenza')
+export class SocioFormeAssistenzaEntity {
+ @Column('bigint', { primary: true, name: 'codiceSocio' })
+ codiceSocio!: string;
+
+ @Column('bigint', { primary: true, name: 'codiceFdA' })
+ codiceFdA!: string;
+
+ @Column('nvarchar', { primary: true, name: 'dataInizio', length: 10 })
+ dataInizio!: string;
+
+ @Column('nvarchar', { primary: true, name: 'dataFine', length: 10 })
+ dataFine!: string;
+
+ @Column('int', { primary: true, name: 'titolare' })
+ titolare!: number;
+
+ @Column('bigint', { name: 'codiceContratto', nullable: true })
+ codiceContratto!: string | null;
+
+ @Column('bigint', { name: 'codiceFiguraContratto', nullable: true })
+ codiceFiguraContratto!: string | null;
+
+ @Column('int', { name: 'forzaEtaContributi', nullable: true })
+ forzaEtaContributi!: number | null;
+
+ @Column('nvarchar', { name: 'dataRicezione', nullable: true, length: 10 })
+ dataRicezione!: string | null;
+
+ @ManyToOne(() => FormeAssistenzaEntity, (formeAssistenzaEntity) => formeAssistenzaEntity.socioFormeAssistenza)
+ @JoinColumn([{ name: 'codiceFdA', referencedColumnName: 'codiceFda' }])
+ formaAssistenza!: FormeAssistenzaEntity;
+
+ @ManyToOne(() => SocioEntity, (socioEntity) => socioEntity.socioFormeAssistenzas)
+ @JoinColumn([{ name: 'codiceSocio', referencedColumnName: 'codiceSocio' }])
+ socio!: SocioEntity;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/entities/sportelli.entity.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/sportelli.entity.ts
new file mode 100644
index 0000000..5798b76
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/entities/sportelli.entity.ts
@@ -0,0 +1,30 @@
+import { Column, Entity, Index } from 'typeorm';
+
+@Index('PK_sportelli', ['codiceSportello'], { unique: true })
+@Entity('sportelli')
+export class SportelliEntity {
+ @Column('nvarchar', { primary: true, name: 'codiceSportello', length: 255 })
+ codiceSportello!: string;
+
+ @Column('nvarchar', { name: 'denominazione', length: 255 })
+ denominazione!: string;
+
+ @Column('nvarchar', { name: 'email', length: 255 })
+ email!: string;
+
+ @Column('nvarchar', { name: 'password', length: 255 })
+ password!: string;
+
+ @Column('nvarchar', { name: 'indirizzo', length: 200, default: () => "''" })
+ indirizzo!: string;
+
+ @Column('nvarchar', { name: 'citta', length: 200, default: () => "''" })
+ citta!: string;
+
+ @Column('nvarchar', { name: 'provincia', length: 2, default: () => "''" })
+ provincia!: string;
+
+ constructor(init?: Partial) {
+ Object.assign(this, init);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/database/connections/oceano/index.ts b/apps/ebitemp-api/src/modules/database/connections/oceano/index.ts
new file mode 100644
index 0000000..697510e
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/connections/oceano/index.ts
@@ -0,0 +1 @@
+export * from './entities';
diff --git a/apps/ebitemp-api/src/modules/database/database.constants.ts b/apps/ebitemp-api/src/modules/database/database.constants.ts
new file mode 100644
index 0000000..b7ab588
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/database.constants.ts
@@ -0,0 +1 @@
+export const APP_DATASOURCES = Symbol('APP_DATASOURCES');
diff --git a/apps/ebitemp-api/src/modules/database/database.module.ts b/apps/ebitemp-api/src/modules/database/database.module.ts
new file mode 100644
index 0000000..54dc272
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/database.module.ts
@@ -0,0 +1,20 @@
+import { Global, Module } from '@nestjs/common';
+import { EbitempApiDatabaseModule } from './connections/ebitemp-api/database.module';
+import { OceanoDatabaseModule } from './connections/oceano/database.module';
+import { APP_DATASOURCES } from './database.constants';
+import { dataSources } from './utils/typeorm-data-source-factory';
+
+const dataSourcesProvider = {
+ provide: APP_DATASOURCES,
+ useValue: dataSources,
+};
+
+const databaseModules = [EbitempApiDatabaseModule, OceanoDatabaseModule];
+
+@Global()
+@Module({
+ imports: [...databaseModules],
+ providers: [dataSourcesProvider],
+ exports: [dataSourcesProvider, ...databaseModules],
+})
+export class AppDatabaseModule {}
diff --git a/apps/ebitemp-api/src/modules/database/utils/database-config.ts b/apps/ebitemp-api/src/modules/database/utils/database-config.ts
new file mode 100644
index 0000000..ad935e7
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/utils/database-config.ts
@@ -0,0 +1,58 @@
+import { registerAs } from '@nestjs/config';
+import { ConnectionString } from 'connection-string';
+import { first } from 'lodash';
+import { z } from 'zod';
+
+export const databaseSchema = z.object({
+ connectionString: z.string(),
+ type: z.enum([
+ 'mysql',
+ 'postgres',
+ 'cockroachdb',
+ 'sap',
+ 'mariadb',
+ 'sqlite',
+ 'cordova',
+ 'react-native',
+ 'nativescript',
+ 'sqljs',
+ 'oracle',
+ 'mssql',
+ 'mongodb',
+ 'aurora-mysql',
+ 'aurora-postgres',
+ 'expo',
+ 'better-sqlite3',
+ 'capacitor',
+ 'spanner',
+ ]),
+ host: z.string(),
+ port: z.number().optional(),
+ username: z.string(),
+ password: z.string(),
+ database: z.string(),
+ secure: z.boolean(),
+});
+export type DatabaseConfig = z.TypeOf;
+
+export const rawDatabaseSchema = z.object({
+ connectionString: z.string(),
+ secure: z.boolean().default(true),
+});
+export type RawDatabaseConfigSchema = z.TypeOf;
+
+export const databaseConfigFactory = (opts: RawDatabaseConfigSchema) =>
+ registerAs('database', () => {
+ const connectionString = new ConnectionString(opts.connectionString);
+ const config: DatabaseConfig = databaseSchema.strict().parse({
+ connectionString: connectionString.toString(),
+ type: connectionString.protocol,
+ host: first(connectionString.hosts)?.name,
+ port: first(connectionString.hosts)?.port,
+ username: connectionString.user,
+ password: connectionString.password,
+ database: first(connectionString.path),
+ secure: opts.secure,
+ });
+ return config;
+ });
diff --git a/apps/ebitemp-api/src/modules/database/utils/typeorm-data-source-factory.ts b/apps/ebitemp-api/src/modules/database/utils/typeorm-data-source-factory.ts
new file mode 100644
index 0000000..83261b1
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/utils/typeorm-data-source-factory.ts
@@ -0,0 +1,19 @@
+import { DataSource, DataSourceOptions } from 'typeorm';
+
+export const dataSources: DataSource[] = [];
+
+export const typeormDataSourceFactory = (dataSources: DataSource[]) => async (options?: DataSourceOptions) => {
+ const dataSource = await new DataSource(options!).initialize();
+ dataSources.push(dataSource);
+ return dataSource;
+};
+
+export const typeormTransactionalDataSourceFactory = (name?: string) => async (options?: DataSourceOptions) => {
+ const tt = await import('typeorm-transactional');
+ const dataSource = tt.addTransactionalDataSource({
+ name: name,
+ dataSource: new DataSource(options!),
+ });
+ dataSources.push(dataSource);
+ return dataSource;
+};
diff --git a/apps/ebitemp-api/src/modules/database/utils/typeorm-import-entities.ts b/apps/ebitemp-api/src/modules/database/utils/typeorm-import-entities.ts
new file mode 100644
index 0000000..9417926
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/utils/typeorm-import-entities.ts
@@ -0,0 +1,5 @@
+export const typeormEntitiesFromImport = async (entities: T) => {
+ return (Object.keys(entities) as Array).map(
+ (entity: keyof typeof entities) => entities[entity],
+ );
+};
diff --git a/apps/ebitemp-api/src/modules/database/utils/typeorm-module-options-factory.ts b/apps/ebitemp-api/src/modules/database/utils/typeorm-module-options-factory.ts
new file mode 100644
index 0000000..421935b
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/utils/typeorm-module-options-factory.ts
@@ -0,0 +1,26 @@
+import { TypeOrmModuleOptions } from '@nestjs/typeorm';
+import { SnakeNamingStrategy } from 'typeorm-naming-strategies';
+import { DatabaseConfig } from './database-config';
+
+export const typeormModuleOptionsFactory = async (
+ databaseConfig: DatabaseConfig,
+ entities: any[],
+ name?: string,
+): Promise => {
+ return {
+ name: name,
+ type: databaseConfig.type as any,
+ host: databaseConfig.host,
+ port: databaseConfig.port,
+ username: databaseConfig.username,
+ password: databaseConfig.password,
+ database: databaseConfig.database,
+ entities: entities,
+ synchronize: false,
+ logging: process.env['NODE_ENV'] !== 'production',
+ namingStrategy: new SnakeNamingStrategy(),
+ options: {
+ ...(!databaseConfig.secure ? { trustServerCertificate: true } : {}),
+ },
+ };
+};
diff --git a/apps/ebitemp-api/src/modules/database/utils/typeorm-patch.ts b/apps/ebitemp-api/src/modules/database/utils/typeorm-patch.ts
new file mode 100644
index 0000000..e7ca493
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/database/utils/typeorm-patch.ts
@@ -0,0 +1,4 @@
+export async function patchTypeOrm() {
+ (await import('typeorm-transactional')).initializeTransactionalContext();
+ (await import('typeorm-scoped')).patchSelectQueryBuilder();
+}
diff --git a/apps/ebitemp-api/src/modules/enumify/enumify-update-from-database.service.ts b/apps/ebitemp-api/src/modules/enumify/enumify-update-from-database.service.ts
new file mode 100644
index 0000000..8c9809f
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/enumify/enumify-update-from-database.service.ts
@@ -0,0 +1,105 @@
+import { Inject, Injectable, OnApplicationBootstrap } from '@nestjs/common';
+import { differenceBy, get } from 'lodash';
+import { DataSource, QueryFailedError } from 'typeorm';
+import { APP_DATASOURCES } from '../database/database.constants';
+import { Enumify, registeredEnums } from './enumify';
+import { type EnumifyConfig, enumifyConfig } from './enumify.config';
+
+@Injectable()
+export class EnumifyUpdateFromDatabaseService implements OnApplicationBootstrap {
+ constructor(
+ @Inject(APP_DATASOURCES) private readonly datasources: DataSource[],
+ @Inject(enumifyConfig.KEY) private readonly config: EnumifyConfig,
+ ) {}
+
+ async onApplicationBootstrap() {
+ try {
+ const enumUpdateFromDbOnStart = this.config.shouldUpdateEnumFromDbOnStartup;
+ if (!enumUpdateFromDbOnStart) return;
+
+ const errors: string[] = [];
+
+ for (const dataSource of this.datasources) {
+ const logging = dataSource.options.logging;
+ dataSource.setOptions({ logging: false });
+ for (const _registeredEnum of get(registeredEnums, dataSource.name, [])) {
+ const registeredEnum = _registeredEnum;
+
+ const repo = dataSource.getRepository(registeredEnum);
+
+ const enumValues = registeredEnum.enumValues;
+ let dbValues: Enumify[];
+ try {
+ dbValues = await repo.find();
+ } catch (err) {
+ if (
+ err instanceof QueryFailedError &&
+ err.message === `Error: Invalid object name '${repo.metadata.tableName}'.`
+ ) {
+ errors.push(
+ `[${dataSource.name}] ${registeredEnum.name}: Table present in code but missing on database: ${enumValues}`,
+ );
+ }
+ if (err instanceof QueryFailedError && err.message.startsWith('Error: Invalid column name')) {
+ errors.push(`[${dataSource.name}] ${registeredEnum.name}: [${repo.metadata.tableName}] ${err.message}`);
+ }
+ continue;
+ }
+
+ const differenceByDbValues = differenceBy(dbValues, enumValues, (x) => (x.id, x.nome));
+ const differenceByEnumValues = differenceBy(enumValues, dbValues, (x) => (x.id, x.nome));
+ if (differenceByDbValues.length > 0) {
+ errors.push(
+ `[${dataSource.name}] ${
+ registeredEnum.name
+ }: Values present on database but missing in code: ${differenceBy(
+ dbValues,
+ enumValues,
+ (x) => (x.id, x.nome),
+ )}`,
+ );
+ }
+ if (differenceByEnumValues.length > 0) {
+ errors.push(
+ `[${dataSource.name}] ${
+ registeredEnum.name
+ }: Values present in code but missing in database: ${differenceBy(
+ enumValues,
+ dbValues,
+ (x) => (x.id, x.nome),
+ )}`,
+ );
+ }
+
+ for (const dbValue of dbValues) {
+ const valueOfByName = registeredEnum.fromKey(dbValue.nome!);
+ const keyOfByCode = registeredEnum.fromValue(dbValue.id!);
+ if (valueOfByName != null && dbValue.id != valueOfByName?.id) {
+ errors.push(
+ `[${dataSource.name}] ${registeredEnum.name}: Different values between database (${dbValue.id}, ${dbValue.nome}) and code (${valueOfByName.id}, ${valueOfByName.nome})`,
+ );
+ } else if (keyOfByCode != null && dbValue.nome != keyOfByCode?.nome) {
+ errors.push(
+ `[${dataSource.name}] ${registeredEnum.name}: Different values between database (${dbValue.id}, ${dbValue.nome}) and code (${keyOfByCode.id}, ${keyOfByCode.nome})`,
+ );
+ } else if (valueOfByName != null || keyOfByCode != null) {
+ const enumValue = (valueOfByName ?? keyOfByCode)!;
+ Object.assign(enumValue, dbValue);
+ }
+ }
+ }
+ dataSource.setOptions({ logging: logging });
+ }
+
+ if (errors.length > 0) {
+ throw new Error(errors.join('\n\t* '));
+ }
+ } catch (err) {
+ if (err instanceof Error) {
+ console.warn(err.message, EnumifyUpdateFromDatabaseService.name);
+ } else {
+ throw err;
+ }
+ }
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/enumify/enumify.config.ts b/apps/ebitemp-api/src/modules/enumify/enumify.config.ts
new file mode 100644
index 0000000..a0b6407
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/enumify/enumify.config.ts
@@ -0,0 +1,17 @@
+import coerceRecordTypes from '../config/utils/coerce-record-types';
+import { registerAs } from '@nestjs/config';
+import { z } from 'zod';
+
+export const enumifySchema = z.object({
+ shouldUpdateEnumFromDbOnStartup: z.boolean().default(true),
+});
+export type EnumifyConfig = z.infer;
+
+export const enumifyConfig = registerAs('enumify', () => {
+ const env = coerceRecordTypes(process.env);
+
+ const config: EnumifyConfig = enumifySchema.strict().parse({
+ shouldUpdateEnumFromDbOnStartup: env['ENUM_UPDATE_FROM_DB_ON_START'],
+ });
+ return config;
+});
diff --git a/apps/ebitemp-api/src/modules/enumify/enumify.module.ts b/apps/ebitemp-api/src/modules/enumify/enumify.module.ts
new file mode 100644
index 0000000..d9b0927
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/enumify/enumify.module.ts
@@ -0,0 +1,12 @@
+import { Module, Global } from '@nestjs/common';
+import { EnumifyUpdateFromDatabaseService } from './enumify-update-from-database.service';
+import { ConfigModule } from '@nestjs/config';
+import { enumifyConfig } from './enumify.config';
+
+@Global()
+@Module({
+ imports: [ConfigModule.forFeature(enumifyConfig)],
+ providers: [EnumifyUpdateFromDatabaseService],
+ exports: [EnumifyUpdateFromDatabaseService],
+})
+export class EnumifyModule {}
diff --git a/apps/ebitemp-api/src/modules/enumify/enumify.ts b/apps/ebitemp-api/src/modules/enumify/enumify.ts
new file mode 100644
index 0000000..2bb8007
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/enumify/enumify.ts
@@ -0,0 +1,74 @@
+// Based on https://github.com/rauschma/enumify
+// Original license: MIT License - Copyright (c) 2020 Axel Rauschmayer
+
+export const registeredEnums: Record = {};
+export function Enum(schema: string) {
+ return function (target: typeof Enumify) {
+ registeredEnums[schema] ??= [];
+ registeredEnums[schema].push(target);
+ };
+}
+
+export class Enumify {
+ static enumKeys: Array;
+ static enumValues: Array;
+
+ public readonly id?: number;
+ public readonly nome?: string;
+
+ static closeEnum() {
+ const enumKeys: Array = [];
+ const enumValues: Array = [];
+
+ for (const [key, value] of Object.entries(this)) {
+ value.nome ??= key;
+ value.id ??= enumValues.length;
+
+ if (value.id == null || value.id === '') {
+ throw new Error(`${this.name}.id`);
+ }
+ if (value.nome == null || value.nome === '') {
+ throw new Error(`${this.name}.nome`);
+ }
+
+ enumKeys.push(value.nome);
+ enumValues.push(value);
+ }
+ this.enumKeys = enumKeys;
+ this.enumValues = enumValues;
+ }
+
+ static fromKey(key: string): undefined | Enumify {
+ if (this.enumKeys == undefined) {
+ throw new Error(`Did you forget to call static _ = ${this.name}.closeEnum() after setup?`);
+ }
+
+ const index = this.enumKeys.findIndex((enumKey) => enumKey.toUpperCase() === key.toString().toUpperCase());
+ if (index >= 0) {
+ return this.enumValues[index];
+ }
+ return undefined;
+ }
+
+ static fromValue(value: number): undefined | Enumify {
+ if (this.enumValues == undefined) {
+ throw new Error(`Did you forget to call static _ = ${this.name}.closeEnum() after setup?`);
+ }
+
+ const index = this.enumValues.map((x) => x.id).indexOf(value);
+ if (index >= 0) {
+ const key = this.enumKeys[index];
+ return this.fromKey(key!);
+ }
+ return undefined;
+ }
+
+ protected constructor(id?: number, nome?: string) {
+ this.id = id;
+ this.nome = nome;
+ }
+
+ toString() {
+ return `(${this.id}, ${this.nome})`;
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/file-transactions/file-transaction.ts b/apps/ebitemp-api/src/modules/file-transactions/file-transaction.ts
new file mode 100644
index 0000000..fdbccf1
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/file-transactions/file-transaction.ts
@@ -0,0 +1,118 @@
+import { Logger } from '@nestjs/common';
+import fs from 'node:fs';
+import { randomUUID } from 'node:crypto';
+import path from 'node:path';
+import { FileTransactionsService } from './file-transactions.service';
+import { copyFilesToFolderOrFail, deleteFiles, renameFiles, renameFilesOrFail } from './file-utils';
+import dayjs from 'dayjs';
+
+export class FileTransaction {
+ public static readonly TO_ADD_SUFFIX = 'toAdd';
+ public static readonly TO_DELETE_SUFFIX = 'toDelete';
+
+ private readonly manager: FileTransactionsService;
+ private readonly logger: Logger;
+
+ public readonly transactionId: string;
+ private readonly ts: Date;
+ public readonly filesToAdd: { src: string; dest: string }[];
+ public readonly filesToDelete: string[];
+
+ constructor(
+ manager: FileTransactionsService,
+ opts: Partial<{
+ transactionId: string;
+ filesToAdd: { src: string; dest: string }[];
+ filesToDelete: string[];
+ logger: Logger;
+ }>,
+ ) {
+ this.manager = manager;
+ this.logger = opts.logger ?? new Logger(FileTransaction.name);
+ this.filesToAdd = opts.filesToAdd ?? [];
+ this.filesToDelete = opts.filesToDelete ?? [];
+ this.transactionId = opts.transactionId ?? (randomUUID().split('-').pop() as string);
+ this.ts = new Date();
+ }
+
+ async addFile(src: string, dest: string) {
+ const destFolderName = path.dirname(dest);
+ const destFileName = path.basename(dest);
+ const destFileNameWithSuffix = `${destFileName}.${this.transactionId}.${FileTransaction.TO_ADD_SUFFIX}`;
+ const destFilePathWithSuffix = path.join(destFolderName, destFileNameWithSuffix);
+
+ this.logger.log(
+ `Adding file '${destFilePathWithSuffix}' in fileTransaction '${
+ this.transactionId
+ }' (started at ${dayjs(this.ts).format('YYYY-MM-DD HH:mm:ss')})`,
+ );
+ this.filesToAdd.push({ src: src, dest: destFilePathWithSuffix });
+
+ if (fs.existsSync(dest)) {
+ await this.deleteFile(dest);
+ }
+
+ await copyFilesToFolderOrFail(this.logger, destFolderName, {
+ srcpath: src,
+ name: destFileNameWithSuffix,
+ });
+ await deleteFiles(this.logger, src);
+ this.manager.persist(this);
+ }
+
+ async deleteFile(src: string) {
+ const destFolderName = path.dirname(src);
+ const destFileName = path.basename(src);
+ const destFileNameWithSuffix = `${destFileName}.${this.transactionId}.${FileTransaction.TO_DELETE_SUFFIX}`;
+ const destFilePathWithSuffix = path.join(destFolderName, destFileNameWithSuffix);
+
+ this.logger.log(
+ `Deleting file '${destFilePathWithSuffix}' in fileTransaction '${
+ this.transactionId
+ }' (started at ${dayjs(this.ts).format('YYYY-MM-DD HH:mm:ss')})`,
+ );
+ this.filesToDelete.push(destFilePathWithSuffix);
+ await renameFilesOrFail(this.logger, { src, dest: destFilePathWithSuffix });
+ this.manager.persist(this);
+ }
+
+ async commitTransaction() {
+ this.logger.log(
+ `Committing fileTransaction '${this.transactionId}' (started at ${dayjs(this.ts).format('YYYY-MM-DD HH:mm:ss')})`,
+ );
+ await renameFiles(
+ this.logger,
+ ...this.filesToAdd.map((fileToAdd) => ({
+ src: fileToAdd.dest,
+ dest: fileToAdd.dest.replace(`.${this.transactionId}.${FileTransaction.TO_ADD_SUFFIX}`, ''),
+ })),
+ );
+ await deleteFiles(this.logger, ...this.filesToDelete);
+ this.manager.unregister(this);
+ }
+
+ async rollbackTransaction() {
+ this.logger.log(
+ `Rollbacking fileTransaction '${this.transactionId}' (started at ${dayjs(this.ts).format(
+ 'YYYY-MM-DD HH:mm:ss',
+ )})`,
+ );
+
+ await renameFiles(
+ this.logger,
+ ...this.filesToAdd.map((fileToMove) => ({
+ src: fileToMove.dest,
+ dest: fileToMove.src,
+ })),
+ );
+
+ await renameFiles(
+ this.logger,
+ ...this.filesToDelete.map((fileToRestore) => ({
+ src: fileToRestore,
+ dest: fileToRestore.replace(`.${this.transactionId}.${FileTransaction.TO_DELETE_SUFFIX}`, ''),
+ })),
+ );
+ this.manager.unregister(this);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/file-transactions/file-transactions.module.ts b/apps/ebitemp-api/src/modules/file-transactions/file-transactions.module.ts
new file mode 100644
index 0000000..87caeac
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/file-transactions/file-transactions.module.ts
@@ -0,0 +1,11 @@
+import { Global, Module } from '@nestjs/common';
+import { KeyvModule } from '../keyv/keyv.module';
+import { FileTransactionsService } from './file-transactions.service';
+
+@Global()
+@Module({
+ imports: [KeyvModule],
+ providers: [FileTransactionsService],
+ exports: [FileTransactionsService],
+})
+export class AppFileTransactionsModule {}
diff --git a/apps/ebitemp-api/src/modules/file-transactions/file-transactions.service.ts b/apps/ebitemp-api/src/modules/file-transactions/file-transactions.service.ts
new file mode 100644
index 0000000..88c3251
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/file-transactions/file-transactions.service.ts
@@ -0,0 +1,52 @@
+import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
+import { FileTransaction } from './file-transaction';
+import { createKeyv, Keyv } from '@keyv/redis';
+import { parse, stringify } from 'flatted';
+import { KeyvService } from '../keyv/keyv.service';
+
+const FILE_TRANSACTIONS_KEY = `FILE_TRANSACTIONS_KEY`;
+
+@Injectable()
+export class FileTransactionsService implements OnModuleInit {
+ private readonly logger = new Logger(FileTransactionsService.name);
+ private readonly map: Record = {};
+
+ private readonly keyv: Keyv;
+
+ constructor(readonly keyvService: KeyvService) {
+ this.keyv = this.keyvService.create({
+ namespace: FileTransactionsService.name,
+ });
+ }
+
+ register(logger?: Logger) {
+ const tx = new FileTransaction(this, { logger });
+ this.persist(tx);
+ return tx;
+ }
+
+ persist(tx: FileTransaction) {
+ this.map[tx.transactionId] = tx;
+ this.keyv.set(FILE_TRANSACTIONS_KEY, this.map);
+ }
+
+ unregister(tx: FileTransaction) {
+ delete this.map[tx.transactionId];
+ this.keyv.set(FILE_TRANSACTIONS_KEY, this.map);
+ }
+
+ async onModuleInit() {
+ this.logger.log('Checking for dangling file transactions...');
+ const dangling = await this.keyv.get>(FILE_TRANSACTIONS_KEY);
+
+ if (dangling) {
+ for (const danglingTx of Object.values(dangling)) {
+ const tx = new FileTransaction(this, {
+ ...danglingTx,
+ logger: this.logger,
+ });
+ await tx.rollbackTransaction();
+ }
+ }
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/file-transactions/file-utils.ts b/apps/ebitemp-api/src/modules/file-transactions/file-utils.ts
new file mode 100644
index 0000000..1b15eb4
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/file-transactions/file-utils.ts
@@ -0,0 +1,106 @@
+import { Logger } from '@nestjs/common';
+import { promises as fs } from 'node:fs';
+import path from 'path';
+
+interface File {
+ srcpath: string;
+ name: string;
+}
+
+export const copyFilesToFolder = (logger: Logger, destFolder: string, ...files: File[]) =>
+ _copyFilesToFolder(logger, destFolder, false, ...files);
+export const copyFilesToFolderOrFail = (logger: Logger, destFolder: string, ...files: File[]) =>
+ _copyFilesToFolder(logger, destFolder, true, ...files);
+export const deleteFolder = (logger: Logger, folder: string) => _deleteFolder(logger, false, folder);
+export const deleteFolderOrFail = (logger: Logger, folder: string) => _deleteFolder(logger, true, folder);
+export const deleteFiles = (logger: Logger, ...files: string[]) => _deleteFiles(logger, false, ...files);
+export const deleteFilesOrFail = (logger: Logger, ...files: string[]) => _deleteFiles(logger, true, ...files);
+export const renameFiles = (logger: Logger, ...files: Array<{ src: string; dest: string }>) =>
+ _renameFiles(logger, false, ...files);
+export const renameFilesOrFail = (logger: Logger, ...files: Array<{ src: string; dest: string }>) =>
+ _renameFiles(logger, true, ...files);
+
+export const normalizeWin32PathToPosix = (filepath: string): string =>
+ path.win32.normalize(filepath).split(path.win32.sep).join(path.posix.sep);
+
+const _copyFilesToFolder = async (
+ logger: Logger,
+ destFolder: string,
+ throwsOnError = false,
+ ...files: File[]
+): Promise => {
+ await fs.mkdir(destFolder, { recursive: true });
+
+ for (const file of files) {
+ try {
+ const destpath = path.join(destFolder, file.name);
+ await fs.copyFile(file.srcpath, destpath);
+ logger.debug(`Copying file '${file.srcpath}' to '${destpath}'`);
+ } catch (err: any) {
+ const msg = `Could not copy '${file.srcpath}' to '${destFolder}'. Inner exception: ${err.message}`;
+ if (throwsOnError) {
+ logger.error(msg);
+ err.message = msg;
+ throw err;
+ }
+ logger.warn(msg);
+ }
+ }
+};
+
+const _deleteFolder = async (logger: Logger, throwsOnError = false, folder: string): Promise => {
+ try {
+ await fs.rmdir(folder, { recursive: true });
+ logger.debug(`Deleting folder '${folder}'`);
+ } catch (err: any) {
+ if (err.code === 'ENOENT') {
+ return;
+ }
+ const msg = `Could not delete '${folder}'. Inner exception: ${err.message}`;
+ if (throwsOnError) {
+ logger.error(msg);
+ throw err;
+ }
+ logger.warn(msg);
+ }
+};
+
+const _deleteFiles = async (logger: Logger, throwsOnError = false, ...files: string[]): Promise => {
+ for (const file of files) {
+ try {
+ await fs.unlink(file);
+ logger.debug(`Deleting file '${file}'`);
+ } catch (err: any) {
+ if (err.code === 'ENOENT') {
+ return;
+ }
+ const msg = `Could not delete '${file}'. Inner exception: ${err.message}`;
+ if (throwsOnError) {
+ logger.error(msg);
+ throw err;
+ }
+ logger.warn(msg);
+ }
+ }
+};
+
+const _renameFiles = async (
+ logger: Logger,
+ throwsOnError = false,
+ ...files: Array<{ src: string; dest: string }>
+): Promise => {
+ for (const file of files) {
+ try {
+ await fs.rename(file.src, file.dest);
+ logger.debug(`Renaming file '${file.src}' to '${file.dest}'`);
+ } catch (err: any) {
+ const msg = `Could not rename '${file.src}' to '${file.dest}'. Inner exception: ${err.message}`;
+ if (throwsOnError) {
+ logger.error(msg);
+ err.message = msg;
+ throw err;
+ }
+ logger.warn(msg);
+ }
+ }
+};
diff --git a/apps/ebitemp-api/src/modules/health/health.controller.ts b/apps/ebitemp-api/src/modules/health/health.controller.ts
new file mode 100644
index 0000000..e55717a
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/health/health.controller.ts
@@ -0,0 +1,35 @@
+import { Controller, Get, Inject, VERSION_NEUTRAL } from '@nestjs/common';
+import {
+ DiskHealthIndicator,
+ HealthCheck,
+ HealthCheckService,
+ MemoryHealthIndicator,
+ TypeOrmHealthIndicator,
+} from '@nestjs/terminus';
+import { DataSource } from 'typeorm';
+import { Public } from '../auth/strategies/jwt/jwt-auth.guard';
+import { APP_DATASOURCES } from '../database/database.constants';
+
+@Public()
+@Controller({ path: 'health', version: VERSION_NEUTRAL })
+export class HealthController {
+ constructor(
+ @Inject(APP_DATASOURCES) private dataSources: DataSource[],
+ private readonly health: HealthCheckService,
+ private readonly db: TypeOrmHealthIndicator,
+ private readonly disk: DiskHealthIndicator,
+ private readonly memory: MemoryHealthIndicator,
+ ) {}
+
+ @Get()
+ @HealthCheck()
+ check() {
+ return this.health.check([
+ ...this.dataSources.map(
+ (dataSource) => () => this.db.pingCheck(`database ${dataSource.options.database}`, { connection: dataSource }),
+ ),
+ () => this.disk.checkStorage('storage', { path: '/', thresholdPercent: 0.5 }), // Threshold at 50% space occupied in path,
+ () => this.memory.checkHeap('memory', 150 * 1024 * 1024), // Threshold at 150MB memory occupied by process
+ ]);
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/health/health.module.ts b/apps/ebitemp-api/src/modules/health/health.module.ts
new file mode 100644
index 0000000..9048b0c
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/health/health.module.ts
@@ -0,0 +1,13 @@
+import { Module } from '@nestjs/common';
+import { TerminusModule } from '@nestjs/terminus';
+import { HealthController } from './health.controller';
+
+@Module({
+ imports: [
+ TerminusModule.forRoot({
+ errorLogStyle: 'pretty',
+ }),
+ ],
+ controllers: [HealthController],
+})
+export class AppHealthModule {}
diff --git a/apps/ebitemp-api/src/modules/keyv/keyv.config.ts b/apps/ebitemp-api/src/modules/keyv/keyv.config.ts
new file mode 100644
index 0000000..3b58958
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/keyv/keyv.config.ts
@@ -0,0 +1,17 @@
+import coerceRecordTypes from '../config/utils/coerce-record-types';
+import { registerAs } from '@nestjs/config';
+import { z } from 'zod';
+
+export const keyvSchema = z.object({
+ redis: z.string(),
+});
+export type KeyvConfig = z.infer;
+
+export const keyvConfig = registerAs('keyv', () => {
+ const env = coerceRecordTypes(process.env);
+
+ const config: KeyvConfig = keyvSchema.strict().parse({
+ redis: env['REDIS_CONNECTION_STRING'],
+ });
+ return config;
+});
diff --git a/apps/ebitemp-api/src/modules/keyv/keyv.module.ts b/apps/ebitemp-api/src/modules/keyv/keyv.module.ts
new file mode 100644
index 0000000..5e639ed
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/keyv/keyv.module.ts
@@ -0,0 +1,11 @@
+import { Module } from '@nestjs/common';
+import { ConfigModule } from '@nestjs/config';
+import { keyvConfig } from './keyv.config';
+import { KeyvService } from './keyv.service';
+
+@Module({
+ imports: [ConfigModule.forFeature(keyvConfig)],
+ providers: [KeyvService],
+ exports: [KeyvService],
+})
+export class KeyvModule {}
diff --git a/apps/ebitemp-api/src/modules/keyv/keyv.service.ts b/apps/ebitemp-api/src/modules/keyv/keyv.service.ts
new file mode 100644
index 0000000..dd02102
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/keyv/keyv.service.ts
@@ -0,0 +1,16 @@
+import { createKeyv, KeyvRedisOptions } from '@keyv/redis';
+import { Inject, Injectable } from '@nestjs/common';
+import { parse, stringify } from 'flatted';
+import { keyvConfig, type KeyvConfig } from './keyv.config';
+
+@Injectable()
+export class KeyvService {
+ constructor(@Inject(keyvConfig.KEY) private readonly config: KeyvConfig) {}
+
+ create(options?: KeyvRedisOptions) {
+ const keyv = createKeyv(this.config.redis, options);
+ keyv.serialize = stringify;
+ keyv.deserialize = parse;
+ return keyv;
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/logger/logger.config.ts b/apps/ebitemp-api/src/modules/logger/logger.config.ts
new file mode 100644
index 0000000..c4bd44a
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/logger/logger.config.ts
@@ -0,0 +1,21 @@
+import coerceRecordTypes from '../config/utils/coerce-record-types';
+import { registerAs } from '@nestjs/config';
+import { z } from 'zod';
+
+export const loggerSchema = z.object({
+ seqServerHost: z.string(),
+ seqServerPort: z.number().finite().positive(),
+ seqApiKey: z.string(),
+});
+export type LoggerConfig = z.infer;
+
+export const loggerConfig = registerAs('logger', () => {
+ const env = coerceRecordTypes(process.env);
+
+ const config: LoggerConfig = loggerSchema.strict().parse({
+ seqServerHost: env['SEQ_SERVER_HOST'],
+ seqServerPort: env['SEQ_SERVER_PORT'],
+ seqApiKey: env['SEQ_API_KEY'],
+ });
+ return config;
+});
diff --git a/apps/ebitemp-api/src/modules/logger/logger.module.ts b/apps/ebitemp-api/src/modules/logger/logger.module.ts
new file mode 100644
index 0000000..34d84a1
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/logger/logger.module.ts
@@ -0,0 +1,63 @@
+import { Module } from '@nestjs/common';
+import { NestApplication } from '@nestjs/core';
+import { LoggerModule } from 'nestjs-pino';
+import { LoggerConfig, loggerConfig } from './logger.config';
+import { ConfigModule } from '@nestjs/config';
+
+@Module({
+ imports: [
+ ConfigModule.forFeature(loggerConfig),
+ LoggerModule.forRootAsync({
+ imports: loggerConfig.asProvider().imports,
+ useFactory: (loggerConfig: LoggerConfig) => ({
+ pinoHttp: {
+ autoLogging: true,
+ quietReqLogger: true,
+ quietResLogger: true,
+ level: 'trace',
+ useLevel: 'trace',
+ mixin() {
+ return { context: NestApplication.name };
+ },
+ customSuccessMessage: (req, res) => {
+ return `${req.method} ${req.url}: ${res.statusCode} request succedeed`;
+ },
+ customErrorMessage: (req, res) => {
+ return `${req.method} ${req.url}: ${res.statusCode} request errored`;
+ },
+ name: 'ebitemp-api',
+ transport: {
+ targets: [
+ ...(process.env['NODE_ENV'] !== 'production'
+ ? [
+ {
+ target: 'pino-pretty',
+ level: 'debug',
+ options: {
+ colorize: true,
+ messageFormat: '[{context}] {msg}',
+ ignore: 'pid,hostname,context',
+ translateTime: 'SYS:yyyy-mm-dd HH:MM:ss o',
+ },
+ },
+ ]
+ : []),
+ {
+ target: '@autotelic/pino-seq-transport',
+ level: 'trace',
+ options: {
+ loggerOpts: {
+ serverUrl: `${loggerConfig.seqServerHost}:${loggerConfig.seqServerPort}`,
+ apiKey: loggerConfig.seqApiKey,
+ },
+ },
+ },
+ ],
+ },
+ },
+ }),
+ inject: [loggerConfig.KEY],
+ }),
+ ],
+})
+export class AppLoggerModule {}
diff --git a/apps/ebitemp-api/src/modules/request-logging/clients/clients.module.ts b/apps/ebitemp-api/src/modules/request-logging/clients/clients.module.ts
new file mode 100644
index 0000000..1a6e715
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/request-logging/clients/clients.module.ts
@@ -0,0 +1,17 @@
+import { Global, Module } from '@nestjs/common';
+import { TypeOrmModule } from '@nestjs/typeorm';
+import { ApiClientEntity, ApiClientInvocazioniEntity } from '../../database/connections/ebitemp-api';
+import { EBITEMP_API_DATASOURCE } from '../../database/connections/ebitemp-api/database.constants';
+import { KeyvModule } from '../../keyv/keyv.module';
+import { ClientsService } from './clients.service';
+
+@Global()
+@Module({
+ imports: [
+ KeyvModule,
+ TypeOrmModule.forFeature([ApiClientEntity, ApiClientInvocazioniEntity], EBITEMP_API_DATASOURCE),
+ ],
+ providers: [ClientsService],
+ exports: [ClientsService],
+})
+export class ClientsModule {}
diff --git a/apps/ebitemp-api/src/modules/request-logging/clients/clients.service.ts b/apps/ebitemp-api/src/modules/request-logging/clients/clients.service.ts
new file mode 100644
index 0000000..9281c87
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/request-logging/clients/clients.service.ts
@@ -0,0 +1,89 @@
+import { Injectable, Logger } from '@nestjs/common';
+import { InjectRepository } from '@nestjs/typeorm';
+import { isError } from '@stdlib/assert';
+import AsyncLock from 'async-lock';
+import { Keyv } from 'cacheable';
+import { isObject } from 'lodash';
+import { Repository } from 'typeorm';
+import { runInTransaction } from 'typeorm-transactional';
+import { ApiClientEntity, ApiClientInvocazioniEntity } from '../../database/connections/ebitemp-api';
+import { EBITEMP_API_DATASOURCE } from '../../database/connections/ebitemp-api/database.constants';
+import { KeyvService } from '../../keyv/keyv.service';
+
+@Injectable()
+export class ClientsService {
+ private readonly logger = new Logger(ClientsService.name);
+ private readonly lock = new AsyncLock();
+
+ private readonly keyv: Keyv;
+
+ constructor(
+ keyvService: KeyvService,
+ @InjectRepository(ApiClientEntity, EBITEMP_API_DATASOURCE)
+ private readonly clientRepository: Repository,
+ @InjectRepository(ApiClientInvocazioniEntity, EBITEMP_API_DATASOURCE)
+ private readonly clientInvocazioniRepository: Repository,
+ ) {
+ this.keyv = keyvService.create({
+ namespace: ClientsService.name,
+ });
+ }
+
+ async insertOne(
+ baseUrl: string,
+ path: string,
+ method: string,
+ requestBody: any,
+ responseBody: any,
+ hasFailed: boolean,
+ errors: string | null,
+ ) {
+ try {
+ return await runInTransaction(
+ async () => {
+ const client = await this.getClient(baseUrl);
+ if (!client) return;
+
+ const payload = JSON.stringify(requestBody);
+ const response = isObject(responseBody) ? JSON.stringify(responseBody) : responseBody;
+
+ const invocazione = this.clientInvocazioniRepository.create({
+ idClient: client.id,
+ percorso: path,
+ metodo: method,
+ timestamp: new Date(),
+ richiesta: payload,
+ risposta: response,
+ errori: errors,
+ flagErrore: hasFailed,
+ });
+
+ await this.clientInvocazioniRepository.insert(invocazione);
+ return invocazione;
+ },
+ { connectionName: EBITEMP_API_DATASOURCE },
+ );
+ } catch (err) {
+ if (!isError(err)) throw err;
+ this.logger.error(`Unexpected error: ${err.message}`);
+ throw err;
+ }
+ }
+
+ private async getClient(baseUrl: string) {
+ const key = `client:baseUrl#${baseUrl}`;
+
+ return await this.lock.acquire(key, async () => {
+ let client = await this.keyv.get(key);
+ const isInCache = client != null;
+ if (!isInCache) {
+ client ??=
+ (await this.clientRepository.findOne({
+ where: { baseUrl: baseUrl },
+ })) ?? undefined;
+ if (client) this.keyv.set(key, client);
+ }
+ return client;
+ });
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/request-logging/endpoints/endpoints.module.ts b/apps/ebitemp-api/src/modules/request-logging/endpoints/endpoints.module.ts
new file mode 100644
index 0000000..be04e62
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/request-logging/endpoints/endpoints.module.ts
@@ -0,0 +1,17 @@
+import { Global, Module } from '@nestjs/common';
+import { TypeOrmModule } from '@nestjs/typeorm';
+import { ApiEndpointEntity, ApiEndpointInvocazioniEntity } from '../../database/connections/ebitemp-api';
+import { EBITEMP_API_DATASOURCE } from '../../database/connections/ebitemp-api/database.constants';
+import { KeyvModule } from '../../keyv/keyv.module';
+import { EndpointsService } from './endpoints.service';
+
+@Global()
+@Module({
+ imports: [
+ KeyvModule,
+ TypeOrmModule.forFeature([ApiEndpointEntity, ApiEndpointInvocazioniEntity], EBITEMP_API_DATASOURCE),
+ ],
+ providers: [EndpointsService],
+ exports: [EndpointsService],
+})
+export class EndpointsModule {}
diff --git a/apps/ebitemp-api/src/modules/request-logging/endpoints/endpoints.service.ts b/apps/ebitemp-api/src/modules/request-logging/endpoints/endpoints.service.ts
new file mode 100644
index 0000000..10232e0
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/request-logging/endpoints/endpoints.service.ts
@@ -0,0 +1,90 @@
+import { Injectable, Logger } from '@nestjs/common';
+import { InjectRepository } from '@nestjs/typeorm';
+import AsyncLock from 'async-lock';
+import { Keyv } from 'cacheable';
+import { Repository } from 'typeorm';
+import { runInTransaction } from 'typeorm-transactional';
+import {
+ AccountsEntity,
+ ApiEndpointEntity,
+ ApiEndpointInvocazioniEntity,
+} from '../../database/connections/ebitemp-api';
+import { EBITEMP_API_DATASOURCE } from '../../database/connections/ebitemp-api/database.constants';
+import { KeyvService } from '../../keyv/keyv.service';
+import { RequestLog } from '../request-logger.interceptor';
+import { isError } from '@stdlib/assert';
+
+@Injectable()
+export class EndpointsService {
+ private readonly logger = new Logger(EndpointsService.name);
+ private readonly lock = new AsyncLock();
+
+ private readonly keyv: Keyv;
+
+ constructor(
+ keyvService: KeyvService,
+ @InjectRepository(ApiEndpointEntity, EBITEMP_API_DATASOURCE)
+ private readonly endpointRepository: Repository,
+ @InjectRepository(ApiEndpointInvocazioniEntity, EBITEMP_API_DATASOURCE)
+ private readonly endpointInvocazioniRepository: Repository,
+ ) {
+ this.keyv = keyvService.create({
+ namespace: EndpointsService.name,
+ });
+ }
+
+ async insertOne(
+ user: AccountsEntity,
+ route: string,
+ method: string,
+ requestLog: RequestLog,
+ responseLog: any,
+ hasFailed: boolean,
+ ) {
+ try {
+ return await runInTransaction(
+ async () => {
+ const endpoint = await this.getEndpoint(route, method);
+ if (!endpoint) return;
+
+ const payload = JSON.stringify(requestLog);
+ const response = JSON.stringify(responseLog);
+
+ const invocazione = this.endpointInvocazioniRepository.create({
+ idAccount: user.id,
+ idEndpoint: endpoint.id,
+ timestamp: new Date(),
+ richiesta: payload,
+ risposta: response,
+ flagErrore: hasFailed,
+ });
+
+ await this.endpointInvocazioniRepository.insert(invocazione);
+ return invocazione;
+ },
+ { connectionName: EBITEMP_API_DATASOURCE },
+ );
+ } catch (err) {
+ if (!isError(err)) throw err;
+ this.logger.error(`Unexpected error: ${err.message}`);
+ throw err;
+ }
+ }
+
+ private async getEndpoint(route: string, method: string) {
+ const key = `endpoint:route,method#${route},${method}`;
+
+ return await this.lock.acquire(key, async () => {
+ let endpoint = await this.keyv.get(key);
+ const isInCache = endpoint != null;
+ if (!isInCache) {
+ endpoint ??=
+ (await this.endpointRepository.findOne({
+ where: { percorso: route, metodo: method },
+ })) ?? undefined;
+ if (endpoint) this.keyv.set(key, endpoint);
+ }
+ return endpoint;
+ });
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/request-logging/request-logger.interceptor.ts b/apps/ebitemp-api/src/modules/request-logging/request-logger.interceptor.ts
new file mode 100644
index 0000000..63add5a
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/request-logging/request-logger.interceptor.ts
@@ -0,0 +1,67 @@
+import { CallHandler, ExecutionContext, Injectable, Logger, NestInterceptor } from '@nestjs/common';
+import { omit } from 'lodash';
+import { Observable } from 'rxjs';
+import { catchError, concatMap } from 'rxjs/operators';
+import { EndpointsService } from './endpoints/endpoints.service';
+import { RequestWithUser } from '../auth/constants/request-with-user';
+
+export type RequestLog = {
+ url: string;
+ idAccount: string;
+ params: object;
+ query: object;
+ body: object;
+};
+
+@Injectable()
+export class RequestLoggerInterceptor implements NestInterceptor {
+ private readonly logger = new Logger(RequestLoggerInterceptor.name);
+
+ constructor(private readonly endpointsService: EndpointsService) {}
+
+ async intercept(context: ExecutionContext, next: CallHandler): Promise> {
+ const request: RequestWithUser = context.switchToHttp().getRequest();
+
+ const user = request.user;
+ const route = request.routeOptions.url ?? '/';
+ const method = request.method;
+
+ request.params = { ...((request.params as object) ?? {}), route, method };
+
+ const requestLog = {
+ url: request.url,
+ idAccount: `${user.id}`,
+ params: omit(request.params as object, ['user', 'route', 'method']),
+ query: omit(request.query as object, ['__context']),
+ body: request.body as object,
+ };
+
+ return next.handle().pipe(
+ concatMap(async (res: any) => {
+ await this.endpointsService.insertOne(user, route, method, requestLog, res, false);
+ return res;
+ }),
+ catchError(async (err: any) => {
+ const getExceptionResponse = (exception: any): any => {
+ if (typeof exception.response === 'object') {
+ const { error, message, ...rest } = exception.response;
+ return {
+ error,
+ message,
+ ...rest,
+ };
+ }
+ return {
+ error: exception.name,
+ message: exception.message,
+ };
+ };
+
+ const res = getExceptionResponse(err);
+
+ await this.endpointsService.insertOne(user, route, method, requestLog, res, true);
+ throw err;
+ }),
+ );
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/request-logging/request-logging.module.ts b/apps/ebitemp-api/src/modules/request-logging/request-logging.module.ts
new file mode 100644
index 0000000..f3fa1ec
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/request-logging/request-logging.module.ts
@@ -0,0 +1,13 @@
+import { Global, Module } from '@nestjs/common';
+import { APP_INTERCEPTOR } from '@nestjs/core';
+import { ClientsModule } from './clients/clients.module';
+import { EndpointsModule } from './endpoints/endpoints.module';
+import { RequestLoggerInterceptor } from './request-logger.interceptor';
+
+@Global()
+@Module({
+ imports: [EndpointsModule, ClientsModule],
+ providers: [],
+ exports: [EndpointsModule, ClientsModule],
+})
+export class AppRequestLoggingModule {}
diff --git a/apps/ebitemp-api/src/modules/schedule/schedule.module.ts b/apps/ebitemp-api/src/modules/schedule/schedule.module.ts
new file mode 100644
index 0000000..6cd0bd2
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/schedule/schedule.module.ts
@@ -0,0 +1,13 @@
+import { Module } from '@nestjs/common';
+import { ScheduleModule } from '@nestjs/schedule';
+import { TypeOrmModule } from '@nestjs/typeorm';
+import { TipiJobsEntity } from '../database/connections/ebitemp-api/entities';
+import { SchedulerService } from './schedule.service';
+import { EBITEMP_API_DATASOURCE } from '../database/connections/ebitemp-api/database.constants';
+
+@Module({
+ imports: [TypeOrmModule.forFeature([TipiJobsEntity], EBITEMP_API_DATASOURCE), ScheduleModule.forRoot()],
+ providers: [SchedulerService],
+ exports: [],
+})
+export class AppScheduleModule {}
diff --git a/apps/ebitemp-api/src/modules/schedule/schedule.service.ts b/apps/ebitemp-api/src/modules/schedule/schedule.service.ts
new file mode 100644
index 0000000..81c76a0
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/schedule/schedule.service.ts
@@ -0,0 +1,56 @@
+import { Injectable, Logger } from '@nestjs/common';
+import { SchedulerRegistry } from '@nestjs/schedule';
+import { InjectRepository } from '@nestjs/typeorm';
+import { isError } from '@stdlib/assert';
+import { CronJob, CronTime } from 'cron';
+import { Repository } from 'typeorm';
+import { EBITEMP_API_DATASOURCE } from '../database/connections/ebitemp-api/database.constants';
+import { TipiJobsEntity } from '../database/connections/ebitemp-api/entities/tipi_jobs.entity';
+
+@Injectable()
+export class SchedulerService {
+ private readonly logger = new Logger(SchedulerService.name);
+
+ private static readonly TIME_ZONE = 'Europe/Rome';
+
+ constructor(
+ private readonly schedulerRegistry: SchedulerRegistry,
+ @InjectRepository(TipiJobsEntity, EBITEMP_API_DATASOURCE)
+ private readonly tipiJobsRepository: Repository,
+ ) {}
+
+ async onApplicationBootstrap() {
+ try {
+ const jobs = this.schedulerRegistry.getCronJobs();
+ const jobTypes = await this.tipiJobsRepository.find();
+
+ for (const [jobName, job] of jobs) {
+ this.rescheduleJobAccordingToJobType(jobTypes, jobName, job);
+ }
+ } catch (err) {
+ if (!isError(err)) throw err;
+ this.logger.error(err.message);
+ this.logger.warn(`Error while retrieving scheduled jobs on database. Skipping jobs.`);
+ }
+ }
+
+ private rescheduleJobAccordingToJobType(jobTypes: TipiJobsEntity[], jobName: string, job: CronJob) {
+ const jobType = jobTypes.find((jobType) => jobType.nome == jobName);
+
+ if (!jobType) {
+ this.logger.warn(`Job type for job '${jobName}' not found on database. Skipping job.`);
+ this.schedulerRegistry.deleteCronJob(jobName);
+ return;
+ }
+
+ const jobTime = new CronTime(jobType.patternCron, SchedulerService.TIME_ZONE);
+ job.setTime(jobTime);
+ job.start();
+
+ this.logger.log(
+ `Job type id '${jobType.id}' found for job '${jobName}' [isActive: ${jobType.flagAttivo}, cronPattern: ${
+ jobType.patternCron
+ }]. Upcoming date => ${job.nextDate()}`,
+ );
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/validation/utils/nestjs-swagger-patches.ts b/apps/ebitemp-api/src/modules/validation/utils/nestjs-swagger-patches.ts
new file mode 100644
index 0000000..40cad94
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/validation/utils/nestjs-swagger-patches.ts
@@ -0,0 +1,3 @@
+export async function patchNestjsSwagger() {
+ (await import('@anatine/zod-nestjs')).patchNestjsSwagger();
+}
diff --git a/apps/ebitemp-api/src/modules/validation/validation.module.ts b/apps/ebitemp-api/src/modules/validation/validation.module.ts
new file mode 100644
index 0000000..3133968
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/validation/validation.module.ts
@@ -0,0 +1,12 @@
+import { Module } from '@nestjs/common';
+import { APP_INTERCEPTOR, APP_PIPE } from '@nestjs/core';
+import { ZodValidationPipe } from './zod.pipe';
+import { ZodSerializerInterceptor } from './zod.serializer';
+
+@Module({
+ providers: [
+ { provide: APP_PIPE, useClass: ZodValidationPipe },
+ { provide: APP_INTERCEPTOR, useClass: ZodSerializerInterceptor },
+ ],
+})
+export class AppValidationModule {}
diff --git a/apps/ebitemp-api/src/modules/validation/zod.pipe.ts b/apps/ebitemp-api/src/modules/validation/zod.pipe.ts
new file mode 100644
index 0000000..c118c73
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/validation/zod.pipe.ts
@@ -0,0 +1,36 @@
+import { ZodDtoStatic } from '@anatine/zod-nestjs';
+import { HTTP_ERRORS_BY_CODE } from '@anatine/zod-nestjs/src/lib/http-errors';
+
+import { ArgumentMetadata, HttpStatus, Injectable, Optional, PipeTransform } from '@nestjs/common';
+
+export interface ZodValidationPipeOptions {
+ errorHttpStatusCode?: keyof typeof HTTP_ERRORS_BY_CODE;
+}
+
+@Injectable()
+export class ZodValidationPipe implements PipeTransform {
+ private readonly errorHttpStatusCode: keyof typeof HTTP_ERRORS_BY_CODE;
+
+ constructor(@Optional() options?: ZodValidationPipeOptions) {
+ this.errorHttpStatusCode = options?.errorHttpStatusCode || HttpStatus.BAD_REQUEST;
+ }
+
+ public transform(value: unknown, metadata: ArgumentMetadata): unknown {
+ const zodSchema = (metadata?.metatype as ZodDtoStatic)?.zodSchema;
+
+ if (zodSchema) {
+ const parseResult = zodSchema.safeParse(value);
+
+ if (!parseResult.success) {
+ const { error } = parseResult;
+ const message = error.errors.map((error) => `${error.path.join('.')}: ${error.message}`);
+
+ throw new HTTP_ERRORS_BY_CODE[this.errorHttpStatusCode](message);
+ }
+
+ return parseResult.data;
+ }
+
+ return value;
+ }
+}
diff --git a/apps/ebitemp-api/src/modules/validation/zod.serializer.ts b/apps/ebitemp-api/src/modules/validation/zod.serializer.ts
new file mode 100644
index 0000000..8a6e83e
--- /dev/null
+++ b/apps/ebitemp-api/src/modules/validation/zod.serializer.ts
@@ -0,0 +1,110 @@
+import { ZodDtoStatic } from '@anatine/zod-nestjs';
+import { HTTP_ERRORS_BY_CODE } from '@anatine/zod-nestjs/src/lib/http-errors';
+import {
+ CallHandler,
+ ExecutionContext,
+ HttpStatus,
+ Inject,
+ Injectable,
+ NestInterceptor,
+ Optional,
+ SetMetadata,
+ StreamableFile,
+} from '@nestjs/common';
+import { chain } from 'lodash';
+import { Observable, map } from 'rxjs';
+import { ZodSchema } from 'zod';
+
+const REFLECTOR = 'Reflector';
+
+export interface ZodSerializerInterceptorOptions {
+ errorHttpStatusCode?: keyof typeof HTTP_ERRORS_BY_CODE;
+}
+
+export const ZodSerializerDto = (dto: ZodDtoStatic | ZodSchema) => SetMetadata('zodSerializedDtoOptions', { dto });
+
+@Injectable()
+export class ZodSerializerInterceptor implements NestInterceptor {
+ private readonly errorHttpStatusCode: keyof typeof HTTP_ERRORS_BY_CODE;
+
+ constructor(
+ @Inject(REFLECTOR) protected readonly reflector: any,
+ @Optional() options?: ZodSerializerInterceptorOptions,
+ ) {
+ this.errorHttpStatusCode = options?.errorHttpStatusCode || HttpStatus.INTERNAL_SERVER_ERROR;
+ }
+
+ intercept(context: ExecutionContext, next: CallHandler): Observable {
+ const responseSchema = this.getContextResponseSchema(context);
+
+ return next.handle().pipe(
+ map((res: object | object[]) => {
+ if (!responseSchema) return res;
+ if (typeof res !== 'object' || res instanceof StreamableFile) return res;
+ if (!('safeParse' in responseSchema)) return res;
+
+ return Array.isArray(res)
+ ? res.map(
+ (item) =>
+ validateInterally(responseSchema, item, {
+ httpStatusCodeOnError: this.errorHttpStatusCode,
+ }).data,
+ )
+ : validateInterally(responseSchema, res, {
+ httpStatusCodeOnError: this.errorHttpStatusCode,
+ }).data;
+ }),
+ );
+ }
+
+ protected getContextResponseSchema(context: ExecutionContext): ZodDtoStatic | ZodSchema | undefined {
+ const zodSerializedDto = (() => {
+ const metadata = this.reflector.getAllAndMerge('zodSerializedDtoOptions', [
+ context.getHandler(),
+ context.getClass(),
+ ]);
+ return metadata.dto;
+ })();
+ if (zodSerializedDto) return zodSerializedDto;
+
+ const swaggerApiResponseType = (() => {
+ const metadata = this.reflector.getAllAndMerge('swagger/apiResponse', [context.getHandler(), context.getClass()]);
+ const metadataForStatusCode = chain([metadata[HttpStatus.OK], metadata[HttpStatus.CREATED]])
+ .filter(Boolean)
+ .first()
+ .value();
+ return metadataForStatusCode.type;
+ })();
+ if (swaggerApiResponseType) return swaggerApiResponseType;
+
+ return undefined;
+ }
+}
+
+function isZodDto(metatype: unknown): metatype is ZodDtoStatic {
+ return !!(metatype as ZodDtoStatic)?.zodSchema;
+}
+
+function validateInterally(
+ schemaOrDto: ZodDtoStatic | ZodSchema,
+ value: any,
+ options: Partial<{
+ httpStatusCodeOnError: keyof typeof HTTP_ERRORS_BY_CODE;
+ }>,
+) {
+ const { httpStatusCodeOnError = HttpStatus.INTERNAL_SERVER_ERROR } = options;
+ const schema = isZodDto(schemaOrDto) ? schemaOrDto.zodSchema : schemaOrDto;
+
+ const parseResult = schema.safeParse(value);
+ if (!parseResult.success) {
+ const { error } = parseResult;
+ const message = error.errors.map((error) => `${error.path.join('.')}: ${error.message}`);
+
+ console.error(
+ `Error while validating dto '${isZodDto(schemaOrDto) ? schemaOrDto.name : 'unknownSchema'}': ${message}`,
+ );
+ console.error('value', value);
+ throw new HTTP_ERRORS_BY_CODE[httpStatusCodeOnError]();
+ }
+ return parseResult;
+}
diff --git a/apps/ebitemp-api/test/app.e2e-spec.ts b/apps/ebitemp-api/test/app.e2e-spec.ts
new file mode 100644
index 0000000..5c64fac
--- /dev/null
+++ b/apps/ebitemp-api/test/app.e2e-spec.ts
@@ -0,0 +1,22 @@
+import { Test, TestingModule } from '@nestjs/testing';
+import { INestApplication } from '@nestjs/common';
+import request from 'supertest';
+import { App } from 'supertest/types';
+import { AppModule } from './../src/app.module';
+
+describe('AppController (e2e)', () => {
+ let app: INestApplication;
+
+ beforeEach(async () => {
+ const moduleFixture: TestingModule = await Test.createTestingModule({
+ imports: [AppModule],
+ }).compile();
+
+ app = moduleFixture.createNestApplication();
+ await app.init();
+ });
+
+ it('/ (GET)', () => {
+ return request(app.getHttpServer()).get('/').expect(200).expect('Hello World!');
+ });
+});
diff --git a/apps/ebitemp-api/test/jest-e2e.json b/apps/ebitemp-api/test/jest-e2e.json
new file mode 100644
index 0000000..e9d912f
--- /dev/null
+++ b/apps/ebitemp-api/test/jest-e2e.json
@@ -0,0 +1,9 @@
+{
+ "moduleFileExtensions": ["js", "json", "ts"],
+ "rootDir": ".",
+ "testEnvironment": "node",
+ "testRegex": ".e2e-spec.ts$",
+ "transform": {
+ "^.+\\.(t|j)s$": "ts-jest"
+ }
+}
diff --git a/apps/ebitemp-api/tsconfig.build.json b/apps/ebitemp-api/tsconfig.build.json
new file mode 100644
index 0000000..64f86c6
--- /dev/null
+++ b/apps/ebitemp-api/tsconfig.build.json
@@ -0,0 +1,4 @@
+{
+ "extends": "./tsconfig.json",
+ "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
+}
diff --git a/apps/ebitemp-api/tsconfig.json b/apps/ebitemp-api/tsconfig.json
new file mode 100644
index 0000000..a622e21
--- /dev/null
+++ b/apps/ebitemp-api/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "extends": "@repo/typescript-config/base.json",
+ "compilerOptions": {
+ "declaration": true,
+ "removeComments": true,
+ "emitDecoratorMetadata": true,
+ "experimentalDecorators": true,
+ "allowSyntheticDefaultImports": true,
+ "target": "ES2023",
+ "sourceMap": true,
+ "outDir": "./dist",
+ "baseUrl": "./",
+ "incremental": true,
+ "skipLibCheck": true,
+ "strictNullChecks": true,
+ "forceConsistentCasingInFileNames": true,
+ "noImplicitAny": false,
+ "strictBindCallApply": false,
+ "noFallthroughCasesInSwitch": false
+ }
+}
diff --git a/apps/web/.gitignore b/apps/web/.gitignore
deleted file mode 100644
index f886745..0000000
--- a/apps/web/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-.yarn/install-state.gz
-
-# testing
-/coverage
-
-# next.js
-/.next/
-/out/
-
-# production
-/build
-
-# misc
-.DS_Store
-*.pem
-
-# debug
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# env files (can opt-in for commiting if needed)
-.env*
-
-# vercel
-.vercel
-
-# typescript
-*.tsbuildinfo
-next-env.d.ts
diff --git a/apps/web/README.md b/apps/web/README.md
deleted file mode 100644
index a98bfa8..0000000
--- a/apps/web/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/create-next-app).
-
-## Getting Started
-
-First, run the development server:
-
-```bash
-npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
-```
-
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-
-You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
-
-This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load Inter, a custom Google Font.
-
-## Learn More
-
-To learn more about Next.js, take a look at the following resources:
-
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
-
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
-
-## Deploy on Vercel
-
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
diff --git a/apps/web/app/favicon.ico b/apps/web/app/favicon.ico
deleted file mode 100644
index 718d6fe..0000000
Binary files a/apps/web/app/favicon.ico and /dev/null differ
diff --git a/apps/web/app/fonts/GeistMonoVF.woff b/apps/web/app/fonts/GeistMonoVF.woff
deleted file mode 100644
index f2ae185..0000000
Binary files a/apps/web/app/fonts/GeistMonoVF.woff and /dev/null differ
diff --git a/apps/web/app/fonts/GeistVF.woff b/apps/web/app/fonts/GeistVF.woff
deleted file mode 100644
index 1b62daa..0000000
Binary files a/apps/web/app/fonts/GeistVF.woff and /dev/null differ
diff --git a/apps/web/app/globals.css b/apps/web/app/globals.css
deleted file mode 100644
index 6af7ecb..0000000
--- a/apps/web/app/globals.css
+++ /dev/null
@@ -1,50 +0,0 @@
-:root {
- --background: #ffffff;
- --foreground: #171717;
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --background: #0a0a0a;
- --foreground: #ededed;
- }
-}
-
-html,
-body {
- max-width: 100vw;
- overflow-x: hidden;
-}
-
-body {
- color: var(--foreground);
- background: var(--background);
-}
-
-* {
- box-sizing: border-box;
- padding: 0;
- margin: 0;
-}
-
-a {
- color: inherit;
- text-decoration: none;
-}
-
-.imgDark {
- display: none;
-}
-
-@media (prefers-color-scheme: dark) {
- html {
- color-scheme: dark;
- }
-
- .imgLight {
- display: none;
- }
- .imgDark {
- display: unset;
- }
-}
diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx
deleted file mode 100644
index 8469537..0000000
--- a/apps/web/app/layout.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { Metadata } from "next";
-import localFont from "next/font/local";
-import "./globals.css";
-
-const geistSans = localFont({
- src: "./fonts/GeistVF.woff",
- variable: "--font-geist-sans",
-});
-const geistMono = localFont({
- src: "./fonts/GeistMonoVF.woff",
- variable: "--font-geist-mono",
-});
-
-export const metadata: Metadata = {
- title: "Create Next App",
- description: "Generated by create next app",
-};
-
-export default function RootLayout({
- children,
-}: Readonly<{
- children: React.ReactNode;
-}>) {
- return (
-
-
- {children}
-
-
- );
-}
diff --git a/apps/web/app/page.module.css b/apps/web/app/page.module.css
deleted file mode 100644
index 3630662..0000000
--- a/apps/web/app/page.module.css
+++ /dev/null
@@ -1,188 +0,0 @@
-.page {
- --gray-rgb: 0, 0, 0;
- --gray-alpha-200: rgba(var(--gray-rgb), 0.08);
- --gray-alpha-100: rgba(var(--gray-rgb), 0.05);
-
- --button-primary-hover: #383838;
- --button-secondary-hover: #f2f2f2;
-
- display: grid;
- grid-template-rows: 20px 1fr 20px;
- align-items: center;
- justify-items: center;
- min-height: 100svh;
- padding: 80px;
- gap: 64px;
- font-synthesis: none;
-}
-
-@media (prefers-color-scheme: dark) {
- .page {
- --gray-rgb: 255, 255, 255;
- --gray-alpha-200: rgba(var(--gray-rgb), 0.145);
- --gray-alpha-100: rgba(var(--gray-rgb), 0.06);
-
- --button-primary-hover: #ccc;
- --button-secondary-hover: #1a1a1a;
- }
-}
-
-.main {
- display: flex;
- flex-direction: column;
- gap: 32px;
- grid-row-start: 2;
-}
-
-.main ol {
- font-family: var(--font-geist-mono);
- padding-left: 0;
- margin: 0;
- font-size: 14px;
- line-height: 24px;
- letter-spacing: -0.01em;
- list-style-position: inside;
-}
-
-.main li:not(:last-of-type) {
- margin-bottom: 8px;
-}
-
-.main code {
- font-family: inherit;
- background: var(--gray-alpha-100);
- padding: 2px 4px;
- border-radius: 4px;
- font-weight: 600;
-}
-
-.ctas {
- display: flex;
- gap: 16px;
-}
-
-.ctas a {
- appearance: none;
- border-radius: 128px;
- height: 48px;
- padding: 0 20px;
- border: none;
- font-family: var(--font-geist-sans);
- border: 1px solid transparent;
- transition: background 0.2s, color 0.2s, border-color 0.2s;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 16px;
- line-height: 20px;
- font-weight: 500;
-}
-
-a.primary {
- background: var(--foreground);
- color: var(--background);
- gap: 8px;
-}
-
-a.secondary {
- border-color: var(--gray-alpha-200);
- min-width: 180px;
-}
-
-button.secondary {
- appearance: none;
- border-radius: 128px;
- height: 48px;
- padding: 0 20px;
- border: none;
- font-family: var(--font-geist-sans);
- border: 1px solid transparent;
- transition: background 0.2s, color 0.2s, border-color 0.2s;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 16px;
- line-height: 20px;
- font-weight: 500;
- background: transparent;
- border-color: var(--gray-alpha-200);
- min-width: 180px;
-}
-
-.footer {
- font-family: var(--font-geist-sans);
- grid-row-start: 3;
- display: flex;
- gap: 24px;
-}
-
-.footer a {
- display: flex;
- align-items: center;
- gap: 8px;
-}
-
-.footer img {
- flex-shrink: 0;
-}
-
-/* Enable hover only on non-touch devices */
-@media (hover: hover) and (pointer: fine) {
- a.primary:hover {
- background: var(--button-primary-hover);
- border-color: transparent;
- }
-
- a.secondary:hover {
- background: var(--button-secondary-hover);
- border-color: transparent;
- }
-
- .footer a:hover {
- text-decoration: underline;
- text-underline-offset: 4px;
- }
-}
-
-@media (max-width: 600px) {
- .page {
- padding: 32px;
- padding-bottom: 80px;
- }
-
- .main {
- align-items: center;
- }
-
- .main ol {
- text-align: center;
- }
-
- .ctas {
- flex-direction: column;
- }
-
- .ctas a {
- font-size: 14px;
- height: 40px;
- padding: 0 16px;
- }
-
- a.secondary {
- min-width: auto;
- }
-
- .footer {
- flex-wrap: wrap;
- align-items: center;
- justify-content: center;
- }
-}
-
-@media (prefers-color-scheme: dark) {
- .logo {
- filter: invert();
- }
-}
diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx
deleted file mode 100644
index b509205..0000000
--- a/apps/web/app/page.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import Image, { type ImageProps } from "next/image";
-import { Button } from "@repo/ui/button";
-import styles from "./page.module.css";
-
-type Props = Omit & {
- srcLight: string;
- srcDark: string;
-};
-
-const ThemeImage = (props: Props) => {
- const { srcLight, srcDark, ...rest } = props;
-
- return (
- <>
-
-
- >
- );
-};
-
-export default function Home() {
- return (
-
-
-
-
- -
- Get started by editing
apps/web/app/page.tsx
-
- - Save and see your changes instantly.
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/web/eslint.config.js b/apps/web/eslint.config.js
deleted file mode 100644
index e8759ff..0000000
--- a/apps/web/eslint.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import { nextJsConfig } from "@repo/eslint-config/next-js";
-
-/** @type {import("eslint").Linter.Config} */
-export default nextJsConfig;
diff --git a/apps/web/next.config.js b/apps/web/next.config.js
deleted file mode 100644
index 4678774..0000000
--- a/apps/web/next.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @type {import('next').NextConfig} */
-const nextConfig = {};
-
-export default nextConfig;
diff --git a/apps/web/package.json b/apps/web/package.json
deleted file mode 100644
index 248bc40..0000000
--- a/apps/web/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "web",
- "version": "0.1.0",
- "type": "module",
- "private": true,
- "scripts": {
- "dev": "next dev --turbopack --port 3000",
- "build": "next build",
- "start": "next start",
- "lint": "next lint --max-warnings 0",
- "check-types": "tsc --noEmit"
- },
- "dependencies": {
- "@repo/ui": "workspace:*",
- "next": "^15.2.1",
- "react": "^19.0.0",
- "react-dom": "^19.0.0"
- },
- "devDependencies": {
- "@repo/eslint-config": "workspace:*",
- "@repo/typescript-config": "workspace:*",
- "@types/node": "^22.13.10",
- "@types/react": "19.0.10",
- "@types/react-dom": "19.0.4",
- "eslint": "^9.22.0",
- "typescript": "5.8.2"
- }
-}
diff --git a/apps/web/public/file-text.svg b/apps/web/public/file-text.svg
deleted file mode 100644
index 9cfb3c9..0000000
--- a/apps/web/public/file-text.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/web/public/globe.svg b/apps/web/public/globe.svg
deleted file mode 100644
index 4230a3d..0000000
--- a/apps/web/public/globe.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/apps/web/public/next.svg b/apps/web/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/apps/web/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/web/public/turborepo-dark.svg b/apps/web/public/turborepo-dark.svg
deleted file mode 100644
index dae38fe..0000000
--- a/apps/web/public/turborepo-dark.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/apps/web/public/turborepo-light.svg b/apps/web/public/turborepo-light.svg
deleted file mode 100644
index ddea915..0000000
--- a/apps/web/public/turborepo-light.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/apps/web/public/vercel.svg b/apps/web/public/vercel.svg
deleted file mode 100644
index 0164ddc..0000000
--- a/apps/web/public/vercel.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/apps/web/public/window.svg b/apps/web/public/window.svg
deleted file mode 100644
index bbc7800..0000000
--- a/apps/web/public/window.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json
deleted file mode 100644
index 7aef056..0000000
--- a/apps/web/tsconfig.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extends": "@repo/typescript-config/nextjs.json",
- "compilerOptions": {
- "plugins": [
- {
- "name": "next"
- }
- ]
- },
- "include": [
- "**/*.ts",
- "**/*.tsx",
- "next-env.d.ts",
- "next.config.js",
- ".next/types/**/*.ts"
- ],
- "exclude": [
- "node_modules"
- ]
-}
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..105abe4
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,28 @@
+services:
+ seq:
+ image: datalust/seq:latest
+ ports:
+ - ${SEQ_UI_PORT}:80
+ - ${SEQ_SERVER_PORT}:5341
+ environment:
+ - ACCEPT_EULA=Y
+ - SEQ_FIRSTRUN_ADMINPASSWORDHASH=QCxh/LN52rQ/pGlajPfJpqdopsx7IX9KAi+5rcU2hETBxfjjHQXydaN9kO9h2n/yKB1DbxnmGULOSlfgsTZRbjUF/wQBrBpbELhUTybNwhAw
+ - BASE_URI=${SEQ_UI_HOST}:${SEQ_UI_PORT}
+ restart: unless-stopped
+ deploy:
+ resources:
+ limits:
+ memory: 4096M
+ reservations:
+ memory: 2048M
+ redis:
+ image: redis:alpine
+ ports:
+ - '${REDIS_PORT}:6379'
+ restart: unless-stopped
+ deploy:
+ resources:
+ limits:
+ memory: 4096M
+ reservations:
+ memory: 2048M
diff --git a/package.json b/package.json
index 5ba47a5..dca319b 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
"check-types": "turbo run check-types"
},
"devDependencies": {
+ "@nestjs/cli": "^11.0.0",
"prettier": "^3.5.3",
"turbo": "^2.4.4",
"typescript": "5.8.2"
diff --git a/packages/eslint-config/next.js b/packages/eslint-config/next.js
deleted file mode 100644
index 6bf01a7..0000000
--- a/packages/eslint-config/next.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import js from "@eslint/js";
-import eslintConfigPrettier from "eslint-config-prettier";
-import tseslint from "typescript-eslint";
-import pluginReactHooks from "eslint-plugin-react-hooks";
-import pluginReact from "eslint-plugin-react";
-import globals from "globals";
-import pluginNext from "@next/eslint-plugin-next";
-import { config as baseConfig } from "./base.js";
-
-/**
- * A custom ESLint configuration for libraries that use Next.js.
- *
- * @type {import("eslint").Linter.Config[]}
- * */
-export const nextJsConfig = [
- ...baseConfig,
- js.configs.recommended,
- eslintConfigPrettier,
- ...tseslint.configs.recommended,
- {
- ...pluginReact.configs.flat.recommended,
- languageOptions: {
- ...pluginReact.configs.flat.recommended.languageOptions,
- globals: {
- ...globals.serviceworker,
- },
- },
- },
- {
- plugins: {
- "@next/next": pluginNext,
- },
- rules: {
- ...pluginNext.configs.recommended.rules,
- ...pluginNext.configs["core-web-vitals"].rules,
- },
- },
- {
- plugins: {
- "react-hooks": pluginReactHooks,
- },
- settings: { react: { version: "detect" } },
- rules: {
- ...pluginReactHooks.configs.recommended.rules,
- // React scope no longer necessary with new JSX transform.
- "react/react-in-jsx-scope": "off",
- },
- },
-];
diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json
index 7192018..e726192 100644
--- a/packages/eslint-config/package.json
+++ b/packages/eslint-config/package.json
@@ -4,18 +4,14 @@
"type": "module",
"private": true,
"exports": {
- "./base": "./base.js",
- "./next-js": "./next.js",
- "./react-internal": "./react-internal.js"
+ "./base": "./base.js"
},
"devDependencies": {
"@eslint/js": "^9.22.0",
- "@next/eslint-plugin-next": "^15.2.1",
"eslint": "^9.22.0",
"eslint-config-prettier": "^10.1.1",
"eslint-plugin-only-warn": "^1.1.0",
- "eslint-plugin-react": "^7.37.4",
- "eslint-plugin-react-hooks": "^5.2.0",
+ "eslint-plugin-prettier": "^5.2.2",
"eslint-plugin-turbo": "^2.4.4",
"globals": "^16.0.0",
"typescript": "^5.8.2",
diff --git a/packages/eslint-config/react-internal.js b/packages/eslint-config/react-internal.js
deleted file mode 100644
index daeccba..0000000
--- a/packages/eslint-config/react-internal.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import js from "@eslint/js";
-import eslintConfigPrettier from "eslint-config-prettier";
-import tseslint from "typescript-eslint";
-import pluginReactHooks from "eslint-plugin-react-hooks";
-import pluginReact from "eslint-plugin-react";
-import globals from "globals";
-import { config as baseConfig } from "./base.js";
-
-/**
- * A custom ESLint configuration for libraries that use React.
- *
- * @type {import("eslint").Linter.Config[]} */
-export const config = [
- ...baseConfig,
- js.configs.recommended,
- eslintConfigPrettier,
- ...tseslint.configs.recommended,
- pluginReact.configs.flat.recommended,
- {
- languageOptions: {
- ...pluginReact.configs.flat.recommended.languageOptions,
- globals: {
- ...globals.serviceworker,
- ...globals.browser,
- },
- },
- },
- {
- plugins: {
- "react-hooks": pluginReactHooks,
- },
- settings: { react: { version: "detect" } },
- rules: {
- ...pluginReactHooks.configs.recommended.rules,
- // React scope no longer necessary with new JSX transform.
- "react/react-in-jsx-scope": "off",
- },
- },
-];
diff --git a/packages/typescript-config/nextjs.json b/packages/typescript-config/nextjs.json
deleted file mode 100644
index e6defa4..0000000
--- a/packages/typescript-config/nextjs.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "extends": "./base.json",
- "compilerOptions": {
- "plugins": [{ "name": "next" }],
- "module": "ESNext",
- "moduleResolution": "Bundler",
- "allowJs": true,
- "jsx": "preserve",
- "noEmit": true
- }
-}
diff --git a/packages/typescript-config/react-library.json b/packages/typescript-config/react-library.json
deleted file mode 100644
index c3a1b26..0000000
--- a/packages/typescript-config/react-library.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "extends": "./base.json",
- "compilerOptions": {
- "jsx": "react-jsx"
- }
-}
diff --git a/packages/ui/eslint.config.mjs b/packages/ui/eslint.config.mjs
deleted file mode 100644
index 19170f8..0000000
--- a/packages/ui/eslint.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-import { config } from "@repo/eslint-config/react-internal";
-
-/** @type {import("eslint").Linter.Config} */
-export default config;
diff --git a/packages/ui/package.json b/packages/ui/package.json
deleted file mode 100644
index 06bf549..0000000
--- a/packages/ui/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "@repo/ui",
- "version": "0.0.0",
- "private": true,
- "exports": {
- "./*": "./src/*.tsx"
- },
- "scripts": {
- "lint": "eslint . --max-warnings 0",
- "generate:component": "turbo gen react-component",
- "check-types": "tsc --noEmit"
- },
- "devDependencies": {
- "@repo/eslint-config": "workspace:*",
- "@repo/typescript-config": "workspace:*",
- "@turbo/gen": "^2.4.4",
- "@types/node": "^22.13.10",
- "@types/react": "19.0.10",
- "@types/react-dom": "19.0.4",
- "eslint": "^9.22.0",
- "typescript": "5.8.2"
- },
- "dependencies": {
- "react": "^19.0.0",
- "react-dom": "^19.0.0"
- }
-}
diff --git a/packages/ui/src/button.tsx b/packages/ui/src/button.tsx
deleted file mode 100644
index 78e5420..0000000
--- a/packages/ui/src/button.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-"use client";
-
-import { ReactNode } from "react";
-
-interface ButtonProps {
- children: ReactNode;
- className?: string;
- appName: string;
-}
-
-export const Button = ({ children, className, appName }: ButtonProps) => {
- return (
-
- );
-};
diff --git a/packages/ui/src/card.tsx b/packages/ui/src/card.tsx
deleted file mode 100644
index 7b98893..0000000
--- a/packages/ui/src/card.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import { type JSX } from "react";
-
-export function Card({
- className,
- title,
- children,
- href,
-}: {
- className?: string;
- title: string;
- children: React.ReactNode;
- href: string;
-}): JSX.Element {
- return (
-
-
- {title} ->
-
- {children}
-
- );
-}
diff --git a/packages/ui/src/code.tsx b/packages/ui/src/code.tsx
deleted file mode 100644
index f7cbd22..0000000
--- a/packages/ui/src/code.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { type JSX } from "react";
-
-export function Code({
- children,
- className,
-}: {
- children: React.ReactNode;
- className?: string;
-}): JSX.Element {
- return {children}
;
-}
diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json
deleted file mode 100644
index ca86687..0000000
--- a/packages/ui/tsconfig.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "extends": "@repo/typescript-config/react-library.json",
- "compilerOptions": {
- "outDir": "dist"
- },
- "include": ["src"],
- "exclude": ["node_modules", "dist"]
-}
diff --git a/packages/ui/turbo/generators/config.ts b/packages/ui/turbo/generators/config.ts
deleted file mode 100644
index 40100ba..0000000
--- a/packages/ui/turbo/generators/config.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import type { PlopTypes } from "@turbo/gen";
-
-// Learn more about Turborepo Generators at https://turbo.build/repo/docs/core-concepts/monorepos/code-generation
-
-export default function generator(plop: PlopTypes.NodePlopAPI): void {
- // A simple generator to add a new React component to the internal UI library
- plop.setGenerator("react-component", {
- description: "Adds a new react component",
- prompts: [
- {
- type: "input",
- name: "name",
- message: "What is the name of the component?",
- },
- ],
- actions: [
- {
- type: "add",
- path: "src/{{kebabCase name}}.tsx",
- templateFile: "templates/component.hbs",
- },
- {
- type: "append",
- path: "package.json",
- pattern: /"exports": {(?)/g,
- template: ' "./{{kebabCase name}}": "./src/{{kebabCase name}}.tsx",',
- },
- ],
- });
-}
diff --git a/packages/ui/turbo/generators/templates/component.hbs b/packages/ui/turbo/generators/templates/component.hbs
deleted file mode 100644
index d968b9e..0000000
--- a/packages/ui/turbo/generators/templates/component.hbs
+++ /dev/null
@@ -1,8 +0,0 @@
-export const {{ pascalCase name }} = ({ children }: { children: React.ReactNode }) => {
- return (
-
-
{{ pascalCase name }} Component
- {children}
-
- );
-};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ebbcca0..f39d39f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,6 +8,9 @@ importers:
.:
devDependencies:
+ '@nestjs/cli':
+ specifier: ^11.0.0
+ version: 11.0.5(@swc/cli@0.6.0(@swc/core@1.11.11)(chokidar@4.0.3))(@swc/core@1.11.11)(@types/node@22.13.10)
prettier:
specifier: ^3.5.3
version: 3.5.3
@@ -18,78 +21,218 @@ importers:
specifier: 5.8.2
version: 5.8.2
- apps/docs:
+ apps/ebitemp-api:
dependencies:
- '@repo/ui':
- specifier: workspace:*
- version: link:../../packages/ui
- next:
- specifier: ^15.2.1
- version: 15.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react:
- specifier: ^19.0.0
- version: 19.0.0
- react-dom:
- specifier: ^19.0.0
- version: 19.0.0(react@19.0.0)
+ '@anatine/zod-nestjs':
+ specifier: ^2.0.10
+ version: 2.0.10(@anatine/zod-openapi@2.2.7(openapi3-ts@4.4.0)(zod@3.24.2))(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/swagger@11.0.7(@fastify/static@8.1.1)(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2))(openapi3-ts@4.4.0)(zod@3.24.2)
+ '@anatine/zod-openapi':
+ specifier: ^2.2.7
+ version: 2.2.7(openapi3-ts@4.4.0)(zod@3.24.2)
+ '@autotelic/pino-seq-transport':
+ specifier: ^0.1.0
+ version: 0.1.0
+ '@fastify/send':
+ specifier: ^4.0.0
+ version: 4.0.0
+ '@fastify/static':
+ specifier: ^8.1.0
+ version: 8.1.1
+ '@keyv/redis':
+ specifier: ^4.2.0
+ version: 4.3.2
+ '@nestjs/common':
+ specifier: ^11.0.8
+ version: 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/config':
+ specifier: ^4.0.0
+ version: 4.0.1(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2)
+ '@nestjs/core':
+ specifier: ^11.0.8
+ version: 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/jwt':
+ specifier: ^11.0.0
+ version: 11.0.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))
+ '@nestjs/passport':
+ specifier: ^11.0.5
+ version: 11.0.5(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0)
+ '@nestjs/platform-express':
+ specifier: ^11.0.8
+ version: 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12)
+ '@nestjs/platform-fastify':
+ specifier: ^11.0.8
+ version: 11.0.12(@fastify/static@8.1.1)(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))
+ '@nestjs/schedule':
+ specifier: ^5.0.1
+ version: 5.0.1(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))
+ '@nestjs/swagger':
+ specifier: ^11.0.3
+ version: 11.0.7(@fastify/static@8.1.1)(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)
+ '@nestjs/terminus':
+ specifier: ^11.0.0
+ version: 11.0.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/typeorm@11.0.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))
+ '@nestjs/typeorm':
+ specifier: ^11.0.0
+ version: 11.0.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))
+ '@stdlib/assert':
+ specifier: ^0.3.3
+ version: 0.3.3
+ argon2:
+ specifier: ^0.41.1
+ version: 0.41.1
+ async-lock:
+ specifier: ^1.4.1
+ version: 1.4.1
+ axios:
+ specifier: ^1.7.9
+ version: 1.8.4
+ bcrypt:
+ specifier: ^5.1.1
+ version: 5.1.1
+ cacheable:
+ specifier: ^1.8.8
+ version: 1.8.9
+ connection-string:
+ specifier: ^4.4.0
+ version: 4.4.0
+ cron:
+ specifier: ^3.5.0
+ version: 3.5.0
+ dayjs:
+ specifier: ^1.11.13
+ version: 1.11.13
+ fastify:
+ specifier: ^5.2.1
+ version: 5.2.1
+ flatted:
+ specifier: ^3.3.2
+ version: 3.3.3
+ lodash:
+ specifier: ^4.17.21
+ version: 4.17.21
+ nestjs-cls:
+ specifier: ^5.4.1
+ version: 5.4.1(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ nestjs-paginate:
+ specifier: ^11.1.1
+ version: 11.1.1(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/swagger@11.0.7(@fastify/static@8.1.1)(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2))(express@5.0.1)(fastify@5.2.1)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))
+ nestjs-pino:
+ specifier: ^4.3.0
+ version: 4.4.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(pino-http@10.4.0)(pino@9.6.0)(rxjs@7.8.2)
+ openapi3-ts:
+ specifier: ^4.4.0
+ version: 4.4.0
+ passport-jwt:
+ specifier: ^4.0.1
+ version: 4.0.1
+ passport-local:
+ specifier: ^1.0.0
+ version: 1.0.0
+ pino-http:
+ specifier: ^10.4.0
+ version: 10.4.0
+ pino-pretty:
+ specifier: ^13.0.0
+ version: 13.0.0
+ reflect-metadata:
+ specifier: ^0.2.2
+ version: 0.2.2
+ rxjs:
+ specifier: ^7.8.1
+ version: 7.8.2
+ tozod:
+ specifier: ^3.0.0
+ version: 3.0.0(zod@3.24.2)
+ typeorm:
+ specifier: ^0.3.20
+ version: 0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+ typeorm-naming-strategies:
+ specifier: ^4.1.0
+ version: 4.1.0(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))
+ typeorm-scoped:
+ specifier: ^1.2.0
+ version: 1.2.0(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))
+ typeorm-transactional:
+ specifier: ^0.5.0
+ version: 0.5.0(reflect-metadata@0.2.2)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))
+ zod:
+ specifier: ^3.24.1
+ version: 3.24.2
devDependencies:
+ '@nestjs/schematics':
+ specifier: ^11.0.0
+ version: 11.0.2(chokidar@4.0.3)(typescript@5.8.2)
+ '@nestjs/testing':
+ specifier: ^11.0.1
+ version: 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12))
'@repo/eslint-config':
specifier: workspace:*
version: link:../../packages/eslint-config
'@repo/typescript-config':
specifier: workspace:*
version: link:../../packages/typescript-config
+ '@swc/cli':
+ specifier: ^0.6.0
+ version: 0.6.0(@swc/core@1.11.11)(chokidar@4.0.3)
+ '@swc/core':
+ specifier: ^1.10.7
+ version: 1.11.11
+ '@types/async-lock':
+ specifier: ^1.4.2
+ version: 1.4.2
+ '@types/bcrypt':
+ specifier: ^5.0.2
+ version: 5.0.2
+ '@types/express':
+ specifier: ^5.0.0
+ version: 5.0.1
+ '@types/jest':
+ specifier: ^29.5.14
+ version: 29.5.14
+ '@types/lodash':
+ specifier: ^4.17.15
+ version: 4.17.16
'@types/node':
- specifier: ^22.13.10
+ specifier: ^22.10.7
version: 22.13.10
- '@types/react':
- specifier: 19.0.10
- version: 19.0.10
- '@types/react-dom':
- specifier: 19.0.4
- version: 19.0.4(@types/react@19.0.10)
- eslint:
- specifier: ^9.22.0
- version: 9.22.0
+ '@types/passport-jwt':
+ specifier: ^4.0.1
+ version: 4.0.1
+ '@types/supertest':
+ specifier: ^6.0.2
+ version: 6.0.2
+ globals:
+ specifier: ^16.0.0
+ version: 16.0.0
+ jest:
+ specifier: ^29.7.0
+ version: 29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+ mssql:
+ specifier: ^11.0.1
+ version: 11.0.1
+ prettier:
+ specifier: ^3.4.2
+ version: 3.5.3
+ source-map-support:
+ specifier: ^0.5.21
+ version: 0.5.21
+ supertest:
+ specifier: ^7.0.0
+ version: 7.0.0
+ ts-jest:
+ specifier: ^29.2.5
+ version: 29.2.6(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))(typescript@5.8.2)
+ ts-loader:
+ specifier: ^9.5.2
+ version: 9.5.2(typescript@5.8.2)(webpack@5.98.0(@swc/core@1.11.11))
+ ts-node:
+ specifier: ^10.9.2
+ version: 10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)
+ tsconfig-paths:
+ specifier: ^4.2.0
+ version: 4.2.0
typescript:
- specifier: 5.8.2
- version: 5.8.2
-
- apps/web:
- dependencies:
- '@repo/ui':
- specifier: workspace:*
- version: link:../../packages/ui
- next:
- specifier: ^15.2.1
- version: 15.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react:
- specifier: ^19.0.0
- version: 19.0.0
- react-dom:
- specifier: ^19.0.0
- version: 19.0.0(react@19.0.0)
- devDependencies:
- '@repo/eslint-config':
- specifier: workspace:*
- version: link:../../packages/eslint-config
- '@repo/typescript-config':
- specifier: workspace:*
- version: link:../../packages/typescript-config
- '@types/node':
- specifier: ^22.13.10
- version: 22.13.10
- '@types/react':
- specifier: 19.0.10
- version: 19.0.10
- '@types/react-dom':
- specifier: 19.0.4
- version: 19.0.4(@types/react@19.0.10)
- eslint:
- specifier: ^9.22.0
- version: 9.22.0
- typescript:
- specifier: 5.8.2
+ specifier: ^5.7.3
version: 5.8.2
packages/eslint-config:
@@ -97,9 +240,6 @@ importers:
'@eslint/js':
specifier: ^9.22.0
version: 9.22.0
- '@next/eslint-plugin-next':
- specifier: ^15.2.1
- version: 15.2.1
eslint:
specifier: ^9.22.0
version: 9.22.0
@@ -109,12 +249,9 @@ importers:
eslint-plugin-only-warn:
specifier: ^1.1.0
version: 1.1.0
- eslint-plugin-react:
- specifier: ^7.37.4
- version: 7.37.4(eslint@9.22.0)
- eslint-plugin-react-hooks:
- specifier: ^5.2.0
- version: 5.2.0(eslint@9.22.0)
+ eslint-plugin-prettier:
+ specifier: ^5.2.2
+ version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.1.1(eslint@9.22.0))(eslint@9.22.0)(prettier@3.5.3)
eslint-plugin-turbo:
specifier: ^2.4.4
version: 2.4.4(eslint@9.22.0)(turbo@2.4.4)
@@ -130,53 +267,294 @@ importers:
packages/typescript-config: {}
- packages/ui:
- dependencies:
- react:
- specifier: ^19.0.0
- version: 19.0.0
- react-dom:
- specifier: ^19.0.0
- version: 19.0.0(react@19.0.0)
- devDependencies:
- '@repo/eslint-config':
- specifier: workspace:*
- version: link:../eslint-config
- '@repo/typescript-config':
- specifier: workspace:*
- version: link:../typescript-config
- '@turbo/gen':
- specifier: ^2.4.4
- version: 2.4.4(@types/node@22.13.10)(typescript@5.8.2)
- '@types/node':
- specifier: ^22.13.10
- version: 22.13.10
- '@types/react':
- specifier: 19.0.10
- version: 19.0.10
- '@types/react-dom':
- specifier: 19.0.4
- version: 19.0.4(@types/react@19.0.10)
- eslint:
- specifier: ^9.22.0
- version: 9.22.0
- typescript:
- specifier: 5.8.2
- version: 5.8.2
-
packages:
- '@babel/runtime-corejs3@7.26.9':
- resolution: {integrity: sha512-5EVjbTegqN7RSJle6hMWYxO4voo4rI+9krITk+DWR+diJgGrjZjrIBnJhjrHYYQsFgI7j1w1QnrvV7YSKBfYGg==}
+ '@ampproject/remapping@2.3.0':
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+
+ '@anatine/zod-nestjs@2.0.10':
+ resolution: {integrity: sha512-90TVowUCqlz7IwNf6EkrtHSTILeSwFnwWIhVDIEYPCdgfO+vVkASiT8RO+Q/olwuo3OxNef9fBDimIDxZMWzcg==}
+ peerDependencies:
+ '@anatine/zod-openapi': ^2.0.1
+ '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0
+ '@nestjs/swagger': ^6.0.0 || ^7.0.0
+ openapi3-ts: ^4.1.2
+ zod: ^3.20.0
+
+ '@anatine/zod-openapi@2.2.7':
+ resolution: {integrity: sha512-kv/bGowgSGHNY2d/KIzx941ym0/elc7xoBiPri31qEUqbDPOSIppiMOZ88AedaTtLk5J1K96++h0CEsHkgFFyQ==}
+ peerDependencies:
+ openapi3-ts: ^4.1.2
+ zod: ^3.20.0
+
+ '@angular-devkit/core@19.1.8':
+ resolution: {integrity: sha512-j1zHKvOsGwu5YwAZGuzi835R9vcW7PkfxmSRIJeVl+vawgk31K3zFb4UPH8AY/NPWYqXIAnwpka3HC1+JrWLWA==}
+ engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ peerDependencies:
+ chokidar: ^4.0.0
+ peerDependenciesMeta:
+ chokidar:
+ optional: true
+
+ '@angular-devkit/core@19.2.0':
+ resolution: {integrity: sha512-qd2nYoHZOYWRsu4MjXG8KiDtfM9ZDRR2rDGa+rDZ3CYAsngCrPmqOebun10dncUjwAidX49P4S2U2elOmX3VYQ==}
+ engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ peerDependencies:
+ chokidar: ^4.0.0
+ peerDependenciesMeta:
+ chokidar:
+ optional: true
+
+ '@angular-devkit/schematics-cli@19.1.8':
+ resolution: {integrity: sha512-sHblN9EuiJgKwJVYc+nhpU+GlVkAJHJc7lBR8YSoaugNGcCMkWn4f7rJnJDywL/CEOHBICnyWZKfTCMsMyg1Cw==}
+ engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ hasBin: true
+
+ '@angular-devkit/schematics@19.1.8':
+ resolution: {integrity: sha512-2JGUMD3zjfY8G4RYpypm2/1YEO+O4DtFycUvptIpsBYyULgnEbJ3tlp2oRiXI2vp9tC8IyWqa/swlA8DTI6ZYQ==}
+ engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+
+ '@angular-devkit/schematics@19.2.0':
+ resolution: {integrity: sha512-cGGqUGqBXIGJkeL65l70y0BflDAu/0Zi/ohbYat3hvadFfumRJnVElVfJ59JtWO7FfKQjxcwCVTyuQ/tevX/9A==}
+ engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+
+ '@autotelic/pino-seq-transport@0.1.0':
+ resolution: {integrity: sha512-ECgQEKsuFmi9irUK3dMhsZl18oOpEb/XVJcGVcQcgtftf30EbvXq8MUVWobD6RPede9Oa2AINX4R2Viq/qnfLg==}
+
+ '@azure/abort-controller@2.1.2':
+ resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-auth@1.9.0':
+ resolution: {integrity: sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-client@1.9.3':
+ resolution: {integrity: sha512-/wGw8fJ4mdpJ1Cum7s1S+VQyXt1ihwKLzfabS1O/RDADnmzVc01dHn44qD0BvGH6KlZNzOMW95tEpKqhkCChPA==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-http-compat@2.2.0':
+ resolution: {integrity: sha512-1kW8ZhN0CfbNOG6C688z5uh2yrzALE7dDXHiR9dY4vt+EbhGZQSbjDa5bQd2rf3X2pdWMsXbqbArxUyeNdvtmg==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-lro@2.7.2':
+ resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-paging@1.6.2':
+ resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-rest-pipeline@1.19.1':
+ resolution: {integrity: sha512-zHeoI3NCs53lLBbWNzQycjnYKsA1CVKlnzSNuSFcUDwBp8HHVObePxrM7HaX+Ha5Ks639H7chNC9HOaIhNS03w==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-tracing@1.2.0':
+ resolution: {integrity: sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-util@1.11.0':
+ resolution: {integrity: sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/identity@4.8.0':
+ resolution: {integrity: sha512-l9ALUGHtFB/JfsqmA+9iYAp2a+cCwdNO/cyIr2y7nJLJsz1aae6qVP8XxT7Kbudg0IQRSIMXj0+iivFdbD1xPA==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/keyvault-common@2.0.0':
+ resolution: {integrity: sha512-wRLVaroQtOqfg60cxkzUkGKrKMsCP6uYXAOomOIysSMyt1/YM0eUn9LqieAWM8DLcU4+07Fio2YGpPeqUbpP9w==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/keyvault-keys@4.9.0':
+ resolution: {integrity: sha512-ZBP07+K4Pj3kS4TF4XdkqFcspWwBHry3vJSOFM5k5ZABvf7JfiMonvaFk2nBF6xjlEbMpz5PE1g45iTMme0raQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/logger@1.1.4':
+ resolution: {integrity: sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/msal-browser@4.7.0':
+ resolution: {integrity: sha512-H4AIPhIQVe1qW4+BJaitqod6UGQiXE3juj7q2ZBsOPjuZicQaqcbnBp2gCroF/icS0+TJ9rGuyCBJbjlAqVOGA==}
+ engines: {node: '>=0.8.0'}
+
+ '@azure/msal-common@15.2.1':
+ resolution: {integrity: sha512-eZHtYE5OHDN0o2NahCENkczQ6ffGc0MoUSAI3hpwGpZBHJXaEQMMZPWtIx86da2L9w7uT+Tr/xgJbGwIkvTZTQ==}
+ engines: {node: '>=0.8.0'}
+
+ '@azure/msal-node@3.3.0':
+ resolution: {integrity: sha512-ulsT3EHF1RQ29X55cxBLgKsIKWni9JdbUqG7sipGVP4uhWcBpmm/vhKOMH340+27Acm9+kHGnN/5XmQ5LrIDgA==}
+ engines: {node: '>=16'}
+
+ '@babel/code-frame@7.26.2':
+ resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
engines: {node: '>=6.9.0'}
+ '@babel/compat-data@7.26.8':
+ resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.26.10':
+ resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.26.10':
+ resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.26.5':
+ resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.25.9':
+ resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.26.0':
+ resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-plugin-utils@7.26.5':
+ resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.25.9':
+ resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.25.9':
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.25.9':
+ resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.26.10':
+ resolution: {integrity: sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.26.10':
+ resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-syntax-async-generators@7.8.4':
+ resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-bigint@7.8.3':
+ resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-class-properties@7.12.13':
+ resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-class-static-block@7.14.5':
+ resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-import-attributes@7.26.0':
+ resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-import-meta@7.10.4':
+ resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-json-strings@7.8.3':
+ resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-jsx@7.25.9':
+ resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-logical-assignment-operators@7.10.4':
+ resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3':
+ resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-numeric-separator@7.10.4':
+ resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-object-rest-spread@7.8.3':
+ resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-optional-catch-binding@7.8.3':
+ resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-optional-chaining@7.8.3':
+ resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-private-property-in-object@7.14.5':
+ resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-top-level-await@7.14.5':
+ resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-typescript@7.25.9':
+ resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/template@7.26.9':
+ resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.26.10':
+ resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.26.10':
+ resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@bcoe/v8-coverage@0.2.3':
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+
+ '@colors/colors@1.5.0':
+ resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
+ engines: {node: '>=0.1.90'}
+
'@cspotcode/source-map-support@0.8.1':
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
engines: {node: '>=12'}
- '@emnapi/runtime@1.3.1':
- resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
-
'@eslint-community/eslint-utils@4.4.1':
resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -215,6 +593,45 @@ packages:
resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@fastify/accept-negotiator@2.0.1':
+ resolution: {integrity: sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==}
+
+ '@fastify/ajv-compiler@4.0.2':
+ resolution: {integrity: sha512-Rkiu/8wIjpsf46Rr+Fitd3HRP+VsxUFDDeag0hs9L0ksfnwx2g7SPQQTFL0E8Qv+rfXzQOxBJnjUB9ITUDjfWQ==}
+
+ '@fastify/cors@11.0.0':
+ resolution: {integrity: sha512-41Bx0LVGr2a6DnnhDN/SgfDlTRNZtEs8niPxyoymV6Hw09AIdz/9Rn/0Fpu+pBOs6kviwS44JY2mB8NcU2qSAA==}
+
+ '@fastify/error@4.1.0':
+ resolution: {integrity: sha512-KeFcciOr1eo/YvIXHP65S94jfEEqn1RxTRBT1aJaHxY5FK0/GDXYozsQMMWlZoHgi8i0s+YtrLsgj/JkUUjSkQ==}
+
+ '@fastify/fast-json-stringify-compiler@5.0.2':
+ resolution: {integrity: sha512-YdR7gqlLg1xZAQa+SX4sMNzQHY5pC54fu9oC5aYSUqBhyn6fkLkrdtKlpVdCNPlwuUuXA1PjFTEmvMF6ZVXVGw==}
+
+ '@fastify/formbody@8.0.2':
+ resolution: {integrity: sha512-84v5J2KrkXzjgBpYnaNRPqwgMsmY7ZDjuj0YVuMR3NXCJRCgKEZy/taSP1wUYGn0onfxJpLyRGDLa+NMaDJtnA==}
+
+ '@fastify/forwarded@3.0.0':
+ resolution: {integrity: sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==}
+
+ '@fastify/merge-json-schemas@0.2.1':
+ resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==}
+
+ '@fastify/middie@9.0.3':
+ resolution: {integrity: sha512-7OYovKXp9UKYeVMcjcFLMcSpoMkmcZmfnG+eAvtdiatN35W7c+r9y1dRfpA+pfFVNuHGGqI3W+vDTmjvcfLcMA==}
+
+ '@fastify/proxy-addr@5.0.0':
+ resolution: {integrity: sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==}
+
+ '@fastify/send@3.3.1':
+ resolution: {integrity: sha512-6pofeVwaHN+E/MAofCwDqkWUliE3i++jlD0VH/LOfU8TJlCkMUSgKvA9bawDdVXxjve7XrdYMyDmkiYaoGWEtA==}
+
+ '@fastify/send@4.0.0':
+ resolution: {integrity: sha512-eJjKDxyBnZ1iMHcmwYWG5wSA/yzVY/yrBy3Upd2+hc0omcK13tWeXRcbF28zEcbl+Z2kXEgMzJ5Rb/gXGWx9Rg==}
+
+ '@fastify/static@8.1.1':
+ resolution: {integrity: sha512-TW9eyVHJLytZNpBlSIqd0bl1giJkEaRaPZG+5AT3L/OBKq9U8D7g/OYmc2NPQZnzPURGhMt3IAWuyVkvd2nOkQ==}
+
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
@@ -235,175 +652,551 @@ packages:
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
engines: {node: '>=18.18'}
- '@img/sharp-darwin-arm64@0.33.5':
- resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [darwin]
+ '@inquirer/checkbox@4.1.4':
+ resolution: {integrity: sha512-d30576EZdApjAMceijXA5jDzRQHT/MygbC+J8I7EqA6f/FRpYxlRtRJbHF8gHeWYeSdOuTEJqonn7QLB1ELezA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-darwin-x64@0.33.5':
- resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [darwin]
+ '@inquirer/confirm@5.1.8':
+ resolution: {integrity: sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-libvips-darwin-arm64@1.0.4':
- resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
- cpu: [arm64]
- os: [darwin]
+ '@inquirer/core@10.1.9':
+ resolution: {integrity: sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-libvips-darwin-x64@1.0.4':
- resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
- cpu: [x64]
- os: [darwin]
+ '@inquirer/editor@4.2.9':
+ resolution: {integrity: sha512-8HjOppAxO7O4wV1ETUlJFg6NDjp/W2NP5FB9ZPAcinAlNT4ZIWOLe2pUVwmmPRSV0NMdI5r/+lflN55AwZOKSw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-libvips-linux-arm64@1.0.4':
- resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
- cpu: [arm64]
- os: [linux]
+ '@inquirer/expand@4.0.11':
+ resolution: {integrity: sha512-OZSUW4hFMW2TYvX/Sv+NnOZgO8CHT2TU1roUCUIF2T+wfw60XFRRp9MRUPCT06cRnKL+aemt2YmTWwt7rOrNEA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-libvips-linux-arm@1.0.5':
- resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
- cpu: [arm]
- os: [linux]
+ '@inquirer/figures@1.0.11':
+ resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==}
+ engines: {node: '>=18'}
- '@img/sharp-libvips-linux-s390x@1.0.4':
- resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
- cpu: [s390x]
- os: [linux]
+ '@inquirer/input@4.1.8':
+ resolution: {integrity: sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-libvips-linux-x64@1.0.4':
- resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
- cpu: [x64]
- os: [linux]
+ '@inquirer/number@3.0.11':
+ resolution: {integrity: sha512-pQK68CsKOgwvU2eA53AG/4npRTH2pvs/pZ2bFvzpBhrznh8Mcwt19c+nMO7LHRr3Vreu1KPhNBF3vQAKrjIulw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
- resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
- cpu: [arm64]
- os: [linux]
+ '@inquirer/password@4.0.11':
+ resolution: {integrity: sha512-dH6zLdv+HEv1nBs96Case6eppkRggMe8LoOTl30+Gq5Wf27AO/vHFgStTVz4aoevLdNXqwE23++IXGw4eiOXTg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-libvips-linuxmusl-x64@1.0.4':
- resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
- cpu: [x64]
- os: [linux]
+ '@inquirer/prompts@7.2.1':
+ resolution: {integrity: sha512-v2JSGri6/HXSfoGIwuKEn8sNCQK6nsB2BNpy2lSX6QH9bsECrMv93QHnj5+f+1ZWpF/VNioIV2B/PDox8EvGuQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
- '@img/sharp-linux-arm64@0.33.5':
- resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
+ '@inquirer/prompts@7.3.2':
+ resolution: {integrity: sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-linux-arm@0.33.5':
- resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm]
- os: [linux]
+ '@inquirer/rawlist@4.0.11':
+ resolution: {integrity: sha512-uAYtTx0IF/PqUAvsRrF3xvnxJV516wmR6YVONOmCWJbbt87HcDHLfL9wmBQFbNJRv5kCjdYKrZcavDkH3sVJPg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-linux-s390x@0.33.5':
- resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [s390x]
- os: [linux]
+ '@inquirer/search@3.0.11':
+ resolution: {integrity: sha512-9CWQT0ikYcg6Ls3TOa7jljsD7PgjcsYEM0bYE+Gkz+uoW9u8eaJCRHJKkucpRE5+xKtaaDbrND+nPDoxzjYyew==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-linux-x64@0.33.5':
- resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
+ '@inquirer/select@4.1.0':
+ resolution: {integrity: sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-linuxmusl-arm64@0.33.5':
- resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
+ '@inquirer/type@3.0.5':
+ resolution: {integrity: sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
- '@img/sharp-linuxmusl-x64@0.33.5':
- resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
+ '@isaacs/cliui@8.0.2':
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
- '@img/sharp-wasm32@0.33.5':
- resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [wasm32]
+ '@istanbuljs/load-nyc-config@1.1.0':
+ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
+ engines: {node: '>=8'}
- '@img/sharp-win32-ia32@0.33.5':
- resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [ia32]
- os: [win32]
+ '@istanbuljs/schema@0.1.3':
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
- '@img/sharp-win32-x64@0.33.5':
- resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [win32]
+ '@jest/console@29.7.0':
+ resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/core@29.7.0':
+ resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ '@jest/environment@29.7.0':
+ resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/expect-utils@29.7.0':
+ resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/expect@29.7.0':
+ resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/fake-timers@29.7.0':
+ resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/globals@29.7.0':
+ resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/reporters@29.7.0':
+ resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ '@jest/schemas@29.6.3':
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/source-map@29.6.3':
+ resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/test-result@29.7.0':
+ resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/test-sequencer@29.7.0':
+ resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/transform@29.7.0':
+ resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/types@29.6.3':
+ resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jridgewell/gen-mapping@0.3.8':
+ resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
+ engines: {node: '>=6.0.0'}
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/source-map@0.3.6':
+ resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
+
'@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
- '@next/env@15.2.1':
- resolution: {integrity: sha512-JmY0qvnPuS2NCWOz2bbby3Pe0VzdAQ7XpEB6uLIHmtXNfAsAO0KLQLkuAoc42Bxbo3/jMC3dcn9cdf+piCcG2Q==}
+ '@js-joda/core@5.6.4':
+ resolution: {integrity: sha512-ChdLDTYMEoYoiKZMT90wZMEdGvZ2/QZMnhvjvEqeO5oLoxUfSiLzfe6Lhf3g88+MhZ+utbAu7PAxX1sZkLo5pA==}
- '@next/eslint-plugin-next@15.2.1':
- resolution: {integrity: sha512-6ppeToFd02z38SllzWxayLxjjNfzvc7Wm07gQOKSLjyASvKcXjNStZrLXMHuaWkhjqxe+cnhb2uzfWXm1VEj/Q==}
+ '@keyv/redis@4.3.2':
+ resolution: {integrity: sha512-9LtpIiRArUIg+hj1hV87d0G+1/229S0Ybi2bupc497oRzHOhYojUkApfubHjMDnYcNuEY7JQTdHlYYCPxhaZfg==}
+ engines: {node: '>= 18'}
- '@next/swc-darwin-arm64@15.2.1':
- resolution: {integrity: sha512-aWXT+5KEREoy3K5AKtiKwioeblmOvFFjd+F3dVleLvvLiQ/mD//jOOuUcx5hzcO9ISSw4lrqtUPntTpK32uXXQ==}
+ '@keyv/serialize@1.0.3':
+ resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==}
+
+ '@lukeed/csprng@1.1.0':
+ resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==}
+ engines: {node: '>=8'}
+
+ '@lukeed/ms@2.0.2':
+ resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==}
+ engines: {node: '>=8'}
+
+ '@mapbox/node-pre-gyp@1.0.11':
+ resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
+ hasBin: true
+
+ '@microsoft/tsdoc@0.15.1':
+ resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==}
+
+ '@napi-rs/nice-android-arm-eabi@1.0.1':
+ resolution: {integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [android]
+
+ '@napi-rs/nice-android-arm64@1.0.1':
+ resolution: {integrity: sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+
+ '@napi-rs/nice-darwin-arm64@1.0.1':
+ resolution: {integrity: sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@15.2.1':
- resolution: {integrity: sha512-E/w8ervu4fcG5SkLhvn1NE/2POuDCDEy5gFbfhmnYXkyONZR68qbUlJlZwuN82o7BrBVAw+tkR8nTIjGiMW1jQ==}
+ '@napi-rs/nice-darwin-x64@1.0.1':
+ resolution: {integrity: sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@15.2.1':
- resolution: {integrity: sha512-gXDX5lIboebbjhiMT6kFgu4svQyjoSed6dHyjx5uZsjlvTwOAnZpn13w9XDaIMFFHw7K8CpBK7HfDKw0VZvUXQ==}
+ '@napi-rs/nice-freebsd-x64@1.0.1':
+ resolution: {integrity: sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@napi-rs/nice-linux-arm-gnueabihf@1.0.1':
+ resolution: {integrity: sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@napi-rs/nice-linux-arm64-gnu@1.0.1':
+ resolution: {integrity: sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@15.2.1':
- resolution: {integrity: sha512-3v0pF/adKZkBWfUffmB/ROa+QcNTrnmYG4/SS+r52HPwAK479XcWoES2I+7F7lcbqc7mTeVXrIvb4h6rR/iDKg==}
+ '@napi-rs/nice-linux-arm64-musl@1.0.1':
+ resolution: {integrity: sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@15.2.1':
- resolution: {integrity: sha512-RbsVq2iB6KFJRZ2cHrU67jLVLKeuOIhnQB05ygu5fCNgg8oTewxweJE8XlLV+Ii6Y6u4EHwETdUiRNXIAfpBww==}
+ '@napi-rs/nice-linux-ppc64-gnu@1.0.1':
+ resolution: {integrity: sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==}
+ engines: {node: '>= 10'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@napi-rs/nice-linux-riscv64-gnu@1.0.1':
+ resolution: {integrity: sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==}
+ engines: {node: '>= 10'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@napi-rs/nice-linux-s390x-gnu@1.0.1':
+ resolution: {integrity: sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==}
+ engines: {node: '>= 10'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@napi-rs/nice-linux-x64-gnu@1.0.1':
+ resolution: {integrity: sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@15.2.1':
- resolution: {integrity: sha512-QHsMLAyAIu6/fWjHmkN/F78EFPKmhQlyX5C8pRIS2RwVA7z+t9cTb0IaYWC3EHLOTjsU7MNQW+n2xGXr11QPpg==}
+ '@napi-rs/nice-linux-x64-musl@1.0.1':
+ resolution: {integrity: sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@15.2.1':
- resolution: {integrity: sha512-Gk42XZXo1cE89i3hPLa/9KZ8OuupTjkDmhLaMKFohjf9brOeZVEa3BQy1J9s9TWUqPhgAEbwv6B2+ciGfe54Vw==}
+ '@napi-rs/nice-win32-arm64-msvc@1.0.1':
+ resolution: {integrity: sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@15.2.1':
- resolution: {integrity: sha512-YjqXCl8QGhVlMR8uBftWk0iTmvtntr41PhG1kvzGp0sUP/5ehTM+cwx25hKE54J0CRnHYjSGjSH3gkHEaHIN9g==}
+ '@napi-rs/nice-win32-ia32-msvc@1.0.1':
+ resolution: {integrity: sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@napi-rs/nice-win32-x64-msvc@1.0.1':
+ resolution: {integrity: sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
+ '@napi-rs/nice@1.0.1':
+ resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==}
+ engines: {node: '>= 10'}
+
+ '@nestjs/cli@11.0.5':
+ resolution: {integrity: sha512-ab/d8Ple+dMSQ4pC7RSNjhntpT8gFQQE8y/F/ilaplp7zPGpuxbayRtYbsA/wc1UkJHORDckrqFc8Jh8mrTq2A==}
+ engines: {node: '>= 20.11'}
+ hasBin: true
+ peerDependencies:
+ '@swc/cli': ^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0
+ '@swc/core': ^1.3.62
+ peerDependenciesMeta:
+ '@swc/cli':
+ optional: true
+ '@swc/core':
+ optional: true
+
+ '@nestjs/common@11.0.12':
+ resolution: {integrity: sha512-6PXxmDe2iYmb57xacnxzpW1NAxRZ7Gf+acMT7/hmRB/4KpZiFU/cNvLWwgbM2BL5QSzQulOwY6ny5bbKnPpB+A==}
+ peerDependencies:
+ class-transformer: '*'
+ class-validator: '*'
+ reflect-metadata: ^0.1.12 || ^0.2.0
+ rxjs: ^7.1.0
+ peerDependenciesMeta:
+ class-transformer:
+ optional: true
+ class-validator:
+ optional: true
+
+ '@nestjs/config@4.0.1':
+ resolution: {integrity: sha512-0hr6lKS//Wf8A6VcV69ts8uD0fke6jtmmmXSxzvwAzOM/HEXEKYEp21nRU+cpYxlYqm7Khb0oTOoVuDGk+AWUw==}
+ peerDependencies:
+ '@nestjs/common': ^10.0.0 || ^11.0.0
+ rxjs: ^7.1.0
+
+ '@nestjs/core@11.0.12':
+ resolution: {integrity: sha512-micQrbh9iL0PuYVx2vsUojuNmMUyqoMCuj7eGAUhvjiZUh4DBLPdxYmJEayCT/equHSiw9vNC95Vm0JigVZ44g==}
+ engines: {node: '>= 20'}
+ peerDependencies:
+ '@nestjs/common': ^11.0.0
+ '@nestjs/microservices': ^11.0.0
+ '@nestjs/platform-express': ^11.0.0
+ '@nestjs/websockets': ^11.0.0
+ reflect-metadata: ^0.1.12 || ^0.2.0
+ rxjs: ^7.1.0
+ peerDependenciesMeta:
+ '@nestjs/microservices':
+ optional: true
+ '@nestjs/platform-express':
+ optional: true
+ '@nestjs/websockets':
+ optional: true
+
+ '@nestjs/jwt@11.0.0':
+ resolution: {integrity: sha512-v7YRsW3Xi8HNTsO+jeHSEEqelX37TVWgwt+BcxtkG/OfXJEOs6GZdbdza200d6KqId1pJQZ6UPj1F0M6E+mxaA==}
+ peerDependencies:
+ '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0
+
+ '@nestjs/mapped-types@2.1.0':
+ resolution: {integrity: sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==}
+ peerDependencies:
+ '@nestjs/common': ^10.0.0 || ^11.0.0
+ class-transformer: ^0.4.0 || ^0.5.0
+ class-validator: ^0.13.0 || ^0.14.0
+ reflect-metadata: ^0.1.12 || ^0.2.0
+ peerDependenciesMeta:
+ class-transformer:
+ optional: true
+ class-validator:
+ optional: true
+
+ '@nestjs/passport@11.0.5':
+ resolution: {integrity: sha512-ulQX6mbjlws92PIM15Naes4F4p2JoxGnIJuUsdXQPT+Oo2sqQmENEZXM7eYuimocfHnKlcfZOuyzbA33LwUlOQ==}
+ peerDependencies:
+ '@nestjs/common': ^10.0.0 || ^11.0.0
+ passport: ^0.5.0 || ^0.6.0 || ^0.7.0
+
+ '@nestjs/platform-express@11.0.12':
+ resolution: {integrity: sha512-Jze6dY1q1BBAjFuPQT9CLjYFl5IxMSQQxD+xs6cV+4EIysHxgSFZMJqiTpknZTFgPneyp0zF1TtQAjxBshnwlg==}
+ peerDependencies:
+ '@nestjs/common': ^11.0.0
+ '@nestjs/core': ^11.0.0
+
+ '@nestjs/platform-fastify@11.0.12':
+ resolution: {integrity: sha512-wpUI+A5jlSTEUyc212kMG2pGVCS29A3xzn8Y73tgu+szX+womi6zXud//+GArrlUcOIaA8Z2sCJLiROkiH2D2A==}
+ peerDependencies:
+ '@fastify/static': ^8.0.0
+ '@fastify/view': ^10.0.0 || ^11.0.0
+ '@nestjs/common': ^11.0.0
+ '@nestjs/core': ^11.0.0
+ peerDependenciesMeta:
+ '@fastify/static':
+ optional: true
+ '@fastify/view':
+ optional: true
+
+ '@nestjs/schedule@5.0.1':
+ resolution: {integrity: sha512-kFoel84I4RyS2LNPH6yHYTKxB16tb3auAEciFuc788C3ph6nABkUfzX5IE+unjVaRX+3GuruJwurNepMlHXpQg==}
+ peerDependencies:
+ '@nestjs/common': ^10.0.0 || ^11.0.0
+ '@nestjs/core': ^10.0.0 || ^11.0.0
+
+ '@nestjs/schematics@11.0.2':
+ resolution: {integrity: sha512-C4KM3BHBG6tRX8t5UrHdUq8Y49asEfJUora/fBXge3UTAnxKGlXc20p5s2Q0Q1+l+1YaXqTrKGSIbYXdPX8r9g==}
+ peerDependencies:
+ typescript: '>=4.8.2'
+
+ '@nestjs/swagger@11.0.7':
+ resolution: {integrity: sha512-WQBDs7yM8KhEKK/ukJOqse6/qLrDKbIIYJjpYvUH79Y9Fm/+9l6lQ3buqBf6jzwmzTaVCw9GVu3vhIuKlYVYRA==}
+ peerDependencies:
+ '@fastify/static': ^8.0.0
+ '@nestjs/common': ^11.0.1
+ '@nestjs/core': ^11.0.1
+ class-transformer: '*'
+ class-validator: '*'
+ reflect-metadata: ^0.1.12 || ^0.2.0
+ peerDependenciesMeta:
+ '@fastify/static':
+ optional: true
+ class-transformer:
+ optional: true
+ class-validator:
+ optional: true
+
+ '@nestjs/terminus@11.0.0':
+ resolution: {integrity: sha512-c55LOo9YGovmQHtFUMa/vDaxGZ2cglMTZejqgHREaApt/GArTfgYYGwhRXPLq8ZwiQQlLuYB+79e9iA8mlDSLA==}
+ peerDependencies:
+ '@grpc/grpc-js': '*'
+ '@grpc/proto-loader': '*'
+ '@mikro-orm/core': '*'
+ '@mikro-orm/nestjs': '*'
+ '@nestjs/axios': ^2.0.0 || ^3.0.0 || ^4.0.0
+ '@nestjs/common': ^10.0.0 || ^11.0.0
+ '@nestjs/core': ^10.0.0 || ^11.0.0
+ '@nestjs/microservices': ^10.0.0 || ^11.0.0
+ '@nestjs/mongoose': ^11.0.0
+ '@nestjs/sequelize': ^10.0.0 || ^11.0.0
+ '@nestjs/typeorm': ^10.0.0 || ^11.0.0
+ '@prisma/client': '*'
+ mongoose: '*'
+ reflect-metadata: 0.1.x || 0.2.x
+ rxjs: 7.x
+ sequelize: '*'
+ typeorm: '*'
+ peerDependenciesMeta:
+ '@grpc/grpc-js':
+ optional: true
+ '@grpc/proto-loader':
+ optional: true
+ '@mikro-orm/core':
+ optional: true
+ '@mikro-orm/nestjs':
+ optional: true
+ '@nestjs/axios':
+ optional: true
+ '@nestjs/microservices':
+ optional: true
+ '@nestjs/mongoose':
+ optional: true
+ '@nestjs/sequelize':
+ optional: true
+ '@nestjs/typeorm':
+ optional: true
+ '@prisma/client':
+ optional: true
+ mongoose:
+ optional: true
+ sequelize:
+ optional: true
+ typeorm:
+ optional: true
+
+ '@nestjs/testing@11.0.12':
+ resolution: {integrity: sha512-jl1McTqrY+zRBFIWcFMVwesY2v++mAdHrrzXsLxatgkf6wRVh6te1MQ6LikgQ6qz4P5qzVV6EiXQVLGvARe5Xw==}
+ peerDependencies:
+ '@nestjs/common': ^11.0.0
+ '@nestjs/core': ^11.0.0
+ '@nestjs/microservices': ^11.0.0
+ '@nestjs/platform-express': ^11.0.0
+ peerDependenciesMeta:
+ '@nestjs/microservices':
+ optional: true
+ '@nestjs/platform-express':
+ optional: true
+
+ '@nestjs/typeorm@11.0.0':
+ resolution: {integrity: sha512-SOeUQl70Lb2OfhGkvnh4KXWlsd+zA08RuuQgT7kKbzivngxzSo1Oc7Usu5VxCxACQC9wc2l9esOHILSJeK7rJA==}
+ peerDependencies:
+ '@nestjs/common': ^10.0.0 || ^11.0.0
+ '@nestjs/core': ^10.0.0 || ^11.0.0
+ reflect-metadata: ^0.1.13 || ^0.2.0
+ rxjs: ^7.2.0
+ typeorm: ^0.3.0
+
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -416,14 +1209,334 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
+ '@nuxt/opencollective@0.4.1':
+ resolution: {integrity: sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==}
+ engines: {node: ^14.18.0 || >=16.10.0, npm: '>=5.10.0'}
+ hasBin: true
+
+ '@phc/format@1.0.0':
+ resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==}
+ engines: {node: '>=10'}
+
+ '@pkgjs/parseargs@0.11.0':
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+
+ '@pkgr/core@0.1.1':
+ resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+
+ '@redis/bloom@1.2.0':
+ resolution: {integrity: sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+
+ '@redis/client@1.6.0':
+ resolution: {integrity: sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg==}
+ engines: {node: '>=14'}
+
+ '@redis/graph@1.1.1':
+ resolution: {integrity: sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+
+ '@redis/json@1.0.7':
+ resolution: {integrity: sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+
+ '@redis/search@1.2.0':
+ resolution: {integrity: sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+
+ '@redis/time-series@1.1.0':
+ resolution: {integrity: sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+
+ '@scarf/scarf@1.4.0':
+ resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==}
+
+ '@sec-ant/readable-stream@0.4.1':
+ resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
+
+ '@sinclair/typebox@0.27.8':
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+
+ '@sindresorhus/is@5.6.0':
+ resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==}
+ engines: {node: '>=14.16'}
+
+ '@sinonjs/commons@3.0.1':
+ resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
+
+ '@sinonjs/fake-timers@10.3.0':
+ resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
+
+ '@sqltools/formatter@1.2.5':
+ resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
+
+ '@stdlib/array@0.3.3':
+ resolution: {integrity: sha512-DaXQwdLRLmxqtu6g5jWvA+6kSHfB0HbnWe3aPGTk+5AaEUFaF9Xz7rbIdx93IAwfvOQH/aE0pCWetW5fMXbjGA==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/assert@0.3.3':
+ resolution: {integrity: sha512-A1N2YwQfpGx8+1ZJr/g9C02KanoyRy9D5LFWeHu7TJq6Mj/g/nhK6U9AFbNtndJ2yvLOUw/FKjrqaP87xswCrw==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/bigint@0.3.3':
+ resolution: {integrity: sha512-F2WgGnjz/8JEmv71onXb111gXTEcRiw3NNdgjlNT8AJN2VlBb3TiD7Do5rI2ipo+QMN0S0o/6fMKZ5xVdzjsBg==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/blas@0.3.3':
+ resolution: {integrity: sha512-Kmx/3AnNVsfH8yXdHz/Dg/n58fxdv3yrcNOggBzsoR4Kj0DvROE57SnEy+JB3ZrWaAoNVx1Qoq2aokTStFvThg==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/boolean@0.3.3':
+ resolution: {integrity: sha512-rYfgUSb5QKpDDFk5UW5iLDtRxPL2xy0WJxRvl/Gjkh2SBocShOMHk1vgHWZM3qHJoxcKtACz7Q3k+LOrNjXvNg==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/buffer@0.3.3':
+ resolution: {integrity: sha512-6DY/MIr+8ICGM49pbq6SLQ/kuO6JzGyc6Xfe2EBKHe4akurUYsxzAQn8NHgxNy+GG+ov86iXB+iYLhIOPYt21Q==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/cli@0.3.3':
+ resolution: {integrity: sha512-Ax4ql11q4zZ8z49FwekuPb26iQ6oi/sOl17nQOr6lHs+9SOG0QDoTir0fZ8oCswCVoRnRlNNCaqHIavvLvCOxQ==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/complex@0.3.3':
+ resolution: {integrity: sha512-WmzBICm3WluhQrGQDaw1iAc7JvHfGNnN0ZBM6c0z7Is93f5YTemb/ZxWwPuueuZLUZF38i8nS6SKU/IlYujf7A==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/constants@0.3.3':
+ resolution: {integrity: sha512-LZp2lkdgaKB16HfhljiyWQDW9gsrRvkXkFH31q8s/tDlrurOhn6RDb/kHyHsvIzEcT2FNvlntBUuqdkSnEgSsw==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/fs@0.3.3':
+ resolution: {integrity: sha512-tsePrjDxwhPVwJZsRt938Phd8EbrOZbiYwdzghdaGGkh1SipZI5Nn32I1il71aDLwBEiXqfs7LOikc9oJZXbPw==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/function@0.3.3':
+ resolution: {integrity: sha512-Wv4g2I8YFf1m0e6bP+sLeM55Xtg/kVd39ckh/N1NoYR8LfwPBqU/BTKdP2HiYEDU8pzK1ZG5f9kMytHJjvV7qw==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/iter@0.3.3':
+ resolution: {integrity: sha512-fjC4IbzJI9c+gRnnPalS7CHD0vEoKByN5lQe/SE8EBCeUwkxdjYFBwzVqK0fDIW9SjpzZup0b82fiwcPZiyCaA==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/math@0.3.3':
+ resolution: {integrity: sha512-X64M4ovkMOOVdEi5uMVtemGNxa6iQRgC7yaej/BiUC4mP+sfBaw5dTD7hsVPHtcLm8jUtGHALSykSJ2glwUcVg==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/napi@0.3.3':
+ resolution: {integrity: sha512-VeQ2u7bi0K3SFVJAfQHSmsK4IFBfFT9uB8U5fIZLcdxNKwD+M84hhul/0w7JVB+4eQJkll0G3pQdq3hkXSgsXg==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/ndarray@0.3.3':
+ resolution: {integrity: sha512-qvqgTxwLtz+0PvG9C6RAUkdkd+24eB3PccZNvsd7ILwPPLhcA7qNNhe6MNPLnuHnjO6Uz+yyniKOYnsdJcPN9w==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/nlp@0.3.3':
+ resolution: {integrity: sha512-tZ5zPgfpWE+JGQ+6ZXMy0STrkjK7Cbux2oI1WjAFOIPAOYmBvsN6q6oqu+Jsy+3bqvbfl+mcYJw6KHpXqGauFQ==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/number@0.3.3':
+ resolution: {integrity: sha512-BltISq+j1q0GLaNZ8rPKGYyDSVlkXsFfn+0t9CXb7w+Vq07Vb3q6siwavVJNb+GAUL+NfYchGbRwi23BIZGsHw==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/object@0.3.3':
+ resolution: {integrity: sha512-DtazD7RpA7NrkwsonTpbe5eNDAJ6m609CB+b6BgiXxF+utfHfUzo5Zc1/MqsHPajWxZMf+b7t7CTc1Le8U3jrA==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/os@0.3.3':
+ resolution: {integrity: sha512-klCH/XYeximeg+PH4zJ8wrVi+yMY+ZBbLqrXMhV1ZvzfdXCw2elnEtSWzK6kMfbzadqq2RofZanJl5FzNfcBBA==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/process@0.3.3':
+ resolution: {integrity: sha512-PxvkWRA+PPxer9I+V8aks/RTKCtMgEyvg8O8jUNzZtFiFTrJ582cWsAn1J1SfRc8kcC9/iFIjBJKKRHO0aN7YQ==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/proxy@0.3.3':
+ resolution: {integrity: sha512-FfoCUpuwOd9n9a4tBS0jP0gSqzZTtoz0lb4WN5rHioDwBgV+453A+D6ZI7VytT35kZSQQoiHRzmYer7u5pUURA==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/random@0.3.3':
+ resolution: {integrity: sha512-3dvcMUPlZnNhhfZeWd5RQnFHnusd4RiX/yn0zrxNOtxK9WVsVvI8OKIsHbRXITFVJxeBCXd3plI/NQW1f+cJsg==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/regexp@0.3.3':
+ resolution: {integrity: sha512-H7dhYidU+ztyj6qKZWq0aExcBDi0f9QzN3HlGqo5AzTuNWB3ScvCeACb3g7h/G/ga9+Js9DlyaiBqrmyHoK+og==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/slice@0.3.3':
+ resolution: {integrity: sha512-Ztb3tEeYQZDu1YT+60FdXhFrFzxcQqAfBjJEHWkbkXYO2uvBNMYY+g5tdMw4pMMFE2BSUBcBQXZ/R8ioIDqYCg==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/stats@0.3.3':
+ resolution: {integrity: sha512-prq0KD/Nc+VRsuuD82L8HSmmJNhroNLVc9DPHZ21e8spQurSx0SUoiScyTbZ6muMITUl0ont4AE1Ql2VoB84eQ==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/streams@0.3.3':
+ resolution: {integrity: sha512-spk7rqsj7xlDI3R/RIZ9BXxh+qTn7wK5+7J13F1BW0QiHIJx1M7qpH8YRx738Y2poPvhEDWQsQ76S1/4FjBVIQ==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/strided@0.3.3':
+ resolution: {integrity: sha512-kKT8n/o+muU3JnvUhlSzlYi6Tvk0wJTbFBtQkLDkYMg/+MmH0iluxqQTOEqqIeBUtQ0ymfH88dsz+dKsKsRrbw==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/string@0.3.3':
+ resolution: {integrity: sha512-CqBfLTQph06AqOMzgQY6woydF1HHdUaeNaKLYKMYVJrqi3WhSqDfIhcQYk8KlouzXmLrzi6y8HcpwrsEQfqAqA==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/symbol@0.3.3':
+ resolution: {integrity: sha512-rOFvxSUdbUulpyy4YIFfW1NLiHu/V06PyGGMu92DFJBjRwwCAfXFatJKQ9XjVlelraJgHtuHeXB/8vgOIC09IQ==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/time@0.3.3':
+ resolution: {integrity: sha512-/FwSa/nn9W2QXGRT7eQMR+gf5cXgHHFE6e1oC7kq9CGYHuGRV3BfsoYXdxZVyumj0Y04fr7obEm2TkHcmkM7wQ==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/types@0.4.3':
+ resolution: {integrity: sha512-9GCqS2eni2VSwa5/CCniAJ4I1eWLtvior1z6hoPJp6VTNMgW9Lh4BiI84IO0xun/0qAclJ+mTGTiCTZxZLK13A==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/utils@0.3.3':
+ resolution: {integrity: sha512-glF2J7pLpMie2UwjGrfcNYVOCtZZ7XN+MVgv5B1/7MeA4FaiJA7bzqKYfOU/U8eCZvdz3rzZSO4HWxQw6TC2wQ==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@stdlib/wasm@0.1.1':
+ resolution: {integrity: sha512-iGuGzsoYLF7hi1TcMRrAhmUKG8sVhbDk+T79XntL5h2kQ14/d5p3X0ptCl3ZFciIGd1matQ/TrDVhr4vMvVmbg==}
+ engines: {node: '>=0.10.0', npm: '>2.7.0'}
+ os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows]
+
+ '@swc/cli@0.6.0':
+ resolution: {integrity: sha512-Q5FsI3Cw0fGMXhmsg7c08i4EmXCrcl+WnAxb6LYOLHw4JFFC3yzmx9LaXZ7QMbA+JZXbigU2TirI7RAfO0Qlnw==}
+ engines: {node: '>= 16.14.0'}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': ^1.2.66
+ chokidar: ^4.0.1
+ peerDependenciesMeta:
+ chokidar:
+ optional: true
+
+ '@swc/core-darwin-arm64@1.11.11':
+ resolution: {integrity: sha512-vJcjGVDB8cZH7zyOkC0AfpFYI/7GHKG0NSsH3tpuKrmoAXJyCYspKPGid7FT53EAlWreN7+Pew+bukYf5j+Fmg==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@swc/core-darwin-x64@1.11.11':
+ resolution: {integrity: sha512-/N4dGdqEYvD48mCF3QBSycAbbQd3yoZ2YHSzYesQf8usNc2YpIhYqEH3sql02UsxTjEFOJSf1bxZABDdhbSl6A==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@swc/core-linux-arm-gnueabihf@1.11.11':
+ resolution: {integrity: sha512-hsBhKK+wVXdN3x9MrL5GW0yT8o9GxteE5zHAI2HJjRQel3HtW7m5Nvwaq+q8rwMf4YQRd8ydbvwl4iUOZx7i2Q==}
+ engines: {node: '>=10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@swc/core-linux-arm64-gnu@1.11.11':
+ resolution: {integrity: sha512-YOCdxsqbnn/HMPCNM6nrXUpSndLXMUssGTtzT7ffXqr7WuzRg2e170FVDVQFIkb08E7Ku5uOnnUVAChAJQbMOQ==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@swc/core-linux-arm64-musl@1.11.11':
+ resolution: {integrity: sha512-nR2tfdQRRzwqR2XYw9NnBk9Fdvff/b8IiJzDL28gRR2QiJWLaE8LsRovtWrzCOYq6o5Uu9cJ3WbabWthLo4jLw==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@swc/core-linux-x64-gnu@1.11.11':
+ resolution: {integrity: sha512-b4gBp5HA9xNWNC5gsYbdzGBJWx4vKSGybGMGOVWWuF+ynx10+0sA/o4XJGuNHm8TEDuNh9YLKf6QkIO8+GPJ1g==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@swc/core-linux-x64-musl@1.11.11':
+ resolution: {integrity: sha512-dEvqmQVswjNvMBwXNb8q5uSvhWrJLdttBSef3s6UC5oDSwOr00t3RQPzyS3n5qmGJ8UMTdPRmsopxmqaODISdg==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@swc/core-win32-arm64-msvc@1.11.11':
+ resolution: {integrity: sha512-aZNZznem9WRnw2FbTqVpnclvl8Q2apOBW2B316gZK+qxbe+ktjOUnYaMhdCG3+BYggyIBDOnaJeQrXbKIMmNdw==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@swc/core-win32-ia32-msvc@1.11.11':
+ resolution: {integrity: sha512-DjeJn/IfjgOddmJ8IBbWuDK53Fqw7UvOz7kyI/728CSdDYC3LXigzj3ZYs4VvyeOt+ZcQZUB2HA27edOifomGw==}
+ engines: {node: '>=10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@swc/core-win32-x64-msvc@1.11.11':
+ resolution: {integrity: sha512-Gp/SLoeMtsU4n0uRoKDOlGrRC6wCfifq7bqLwSlAG8u8MyJYJCcwjg7ggm0rhLdC2vbiZ+lLVl3kkETp+JUvKg==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@swc/core@1.11.11':
+ resolution: {integrity: sha512-pCVY2Wn6dV/labNvssk9b3Owi4WOYsapcbWm90XkIj4xH/56Z6gzja9fsU+4MdPuEfC2Smw835nZHcdCFGyX6A==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@swc/helpers': '*'
+ peerDependenciesMeta:
+ '@swc/helpers':
+ optional: true
+
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
- '@swc/helpers@0.5.15':
- resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
+ '@swc/types@0.1.19':
+ resolution: {integrity: sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==}
- '@tootallnate/quickjs-emscripten@0.23.0':
- resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
+ '@szmarczak/http-timer@5.0.1':
+ resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
+ engines: {node: '>=14.16'}
+
+ '@tediousjs/connection-string@0.5.0':
+ resolution: {integrity: sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==}
+
+ '@tokenizer/token@0.3.0':
+ resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
'@tsconfig/node10@1.0.11':
resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
@@ -437,43 +1550,137 @@ packages:
'@tsconfig/node16@1.0.4':
resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
- '@turbo/gen@2.4.4':
- resolution: {integrity: sha512-02DR0UFngfVROq/L7j4VdkpT46Rnk5mm8i5AE985jV114SjuN57Y2oBjSK9Lzm6hlun/H0MQtdJBRybk4nRIAQ==}
+ '@types/async-lock@1.4.2':
+ resolution: {integrity: sha512-HlZ6Dcr205BmNhwkdXqrg2vkFMN2PluI7Lgr8In3B3wE5PiQHhjRqtW/lGdVU9gw+sM0JcIDx2AN+cW8oSWIcw==}
- '@turbo/workspaces@2.4.4':
- resolution: {integrity: sha512-5CK3ZkVskSExf9YaXVMJ04F6Fb18HXKVZw8TMKVP7qOIvHGiBmT6YzWHqsQ3/PMNov2TzJ41ofRKX3zjR3G6Yg==}
+ '@types/babel__core@7.20.5':
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+
+ '@types/babel__generator@7.6.8':
+ resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
+
+ '@types/babel__template@7.4.4':
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+
+ '@types/babel__traverse@7.20.6':
+ resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
+
+ '@types/bcrypt@5.0.2':
+ resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==}
+
+ '@types/body-parser@1.19.5':
+ resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
+
+ '@types/cls-hooked@4.3.9':
+ resolution: {integrity: sha512-CMtHMz6Q/dkfcHarq9nioXH8BDPP+v5xvd+N90lBQ2bdmu06UvnLDqxTKoOJzz4SzIwb/x9i4UXGAAcnUDuIvg==}
+
+ '@types/connect@3.4.38':
+ resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
+
+ '@types/cookiejar@2.1.5':
+ resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==}
+
+ '@types/eslint-scope@3.7.7':
+ resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
+
+ '@types/eslint@9.6.1':
+ resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
- '@types/glob@7.2.0':
- resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
+ '@types/express-serve-static-core@5.0.6':
+ resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==}
- '@types/inquirer@6.5.0':
- resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==}
+ '@types/express@5.0.1':
+ resolution: {integrity: sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==}
+
+ '@types/graceful-fs@4.1.9':
+ resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
+
+ '@types/http-cache-semantics@4.0.4':
+ resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
+
+ '@types/http-errors@2.0.4':
+ resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
+
+ '@types/istanbul-lib-coverage@2.0.6':
+ resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
+
+ '@types/istanbul-lib-report@3.0.3':
+ resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
+
+ '@types/istanbul-reports@3.0.4':
+ resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
+
+ '@types/jest@29.5.14':
+ resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==}
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
- '@types/minimatch@5.1.2':
- resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
+ '@types/jsonwebtoken@9.0.7':
+ resolution: {integrity: sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==}
+
+ '@types/jsonwebtoken@9.0.9':
+ resolution: {integrity: sha512-uoe+GxEuHbvy12OUQct2X9JenKM3qAscquYymuQN4fMWG9DBQtykrQEFcAbVACF7qaLw9BePSodUL0kquqBJpQ==}
+
+ '@types/lodash@4.17.16':
+ resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==}
+
+ '@types/luxon@3.4.2':
+ resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==}
+
+ '@types/methods@1.1.4':
+ resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==}
+
+ '@types/mime@1.3.5':
+ resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
+
+ '@types/ms@2.1.0':
+ resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
'@types/node@22.13.10':
resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==}
- '@types/react-dom@19.0.4':
- resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==}
- peerDependencies:
- '@types/react': ^19.0.0
+ '@types/passport-jwt@4.0.1':
+ resolution: {integrity: sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ==}
- '@types/react@19.0.10':
- resolution: {integrity: sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==}
+ '@types/passport-strategy@0.2.38':
+ resolution: {integrity: sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA==}
- '@types/through@0.0.33':
- resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==}
+ '@types/passport@1.0.17':
+ resolution: {integrity: sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg==}
- '@types/tinycolor2@1.4.6':
- resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==}
+ '@types/qs@6.9.18':
+ resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==}
+
+ '@types/range-parser@1.2.7':
+ resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
+
+ '@types/readable-stream@4.0.18':
+ resolution: {integrity: sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA==}
+
+ '@types/send@0.17.4':
+ resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
+
+ '@types/serve-static@1.15.7':
+ resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==}
+
+ '@types/stack-utils@2.0.3':
+ resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
+
+ '@types/superagent@8.1.9':
+ resolution: {integrity: sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==}
+
+ '@types/supertest@6.0.2':
+ resolution: {integrity: sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==}
+
+ '@types/yargs-parser@21.0.3':
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+
+ '@types/yargs@17.0.33':
+ resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
'@typescript-eslint/eslint-plugin@8.26.0':
resolution: {integrity: sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==}
@@ -522,6 +1729,111 @@ packages:
resolution: {integrity: sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@webassemblyjs/ast@1.14.1':
+ resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
+
+ '@webassemblyjs/floating-point-hex-parser@1.13.2':
+ resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==}
+
+ '@webassemblyjs/helper-api-error@1.13.2':
+ resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==}
+
+ '@webassemblyjs/helper-buffer@1.14.1':
+ resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==}
+
+ '@webassemblyjs/helper-numbers@1.13.2':
+ resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==}
+
+ '@webassemblyjs/helper-wasm-bytecode@1.13.2':
+ resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==}
+
+ '@webassemblyjs/helper-wasm-section@1.14.1':
+ resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==}
+
+ '@webassemblyjs/ieee754@1.13.2':
+ resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==}
+
+ '@webassemblyjs/leb128@1.13.2':
+ resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==}
+
+ '@webassemblyjs/utf8@1.13.2':
+ resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==}
+
+ '@webassemblyjs/wasm-edit@1.14.1':
+ resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==}
+
+ '@webassemblyjs/wasm-gen@1.14.1':
+ resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==}
+
+ '@webassemblyjs/wasm-opt@1.14.1':
+ resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==}
+
+ '@webassemblyjs/wasm-parser@1.14.1':
+ resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==}
+
+ '@webassemblyjs/wast-printer@1.14.1':
+ resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==}
+
+ '@xhmikosr/archive-type@7.0.0':
+ resolution: {integrity: sha512-sIm84ZneCOJuiy3PpWR5bxkx3HaNt1pqaN+vncUBZIlPZCq8ASZH+hBVdu5H8znR7qYC6sKwx+ie2Q7qztJTxA==}
+ engines: {node: ^14.14.0 || >=16.0.0}
+
+ '@xhmikosr/bin-check@7.0.3':
+ resolution: {integrity: sha512-4UnCLCs8DB+itHJVkqFp9Zjg+w/205/J2j2wNBsCEAm/BuBmtua2hhUOdAMQE47b1c7P9Xmddj0p+X1XVsfHsA==}
+ engines: {node: '>=18'}
+
+ '@xhmikosr/bin-wrapper@13.0.5':
+ resolution: {integrity: sha512-DT2SAuHDeOw0G5bs7wZbQTbf4hd8pJ14tO0i4cWhRkIJfgRdKmMfkDilpaJ8uZyPA0NVRwasCNAmMJcWA67osw==}
+ engines: {node: '>=18'}
+
+ '@xhmikosr/decompress-tar@8.0.1':
+ resolution: {integrity: sha512-dpEgs0cQKJ2xpIaGSO0hrzz3Kt8TQHYdizHsgDtLorWajuHJqxzot9Hbi0huRxJuAGG2qiHSQkwyvHHQtlE+fg==}
+ engines: {node: '>=18'}
+
+ '@xhmikosr/decompress-tarbz2@8.0.2':
+ resolution: {integrity: sha512-p5A2r/AVynTQSsF34Pig6olt9CvRj6J5ikIhzUd3b57pUXyFDGtmBstcw+xXza0QFUh93zJsmY3zGeNDlR2AQQ==}
+ engines: {node: '>=18'}
+
+ '@xhmikosr/decompress-targz@8.0.1':
+ resolution: {integrity: sha512-mvy5AIDIZjQ2IagMI/wvauEiSNHhu/g65qpdM4EVoYHUJBAmkQWqcPJa8Xzi1aKVTmOA5xLJeDk7dqSjlHq8Mg==}
+ engines: {node: '>=18'}
+
+ '@xhmikosr/decompress-unzip@7.0.0':
+ resolution: {integrity: sha512-GQMpzIpWTsNr6UZbISawsGI0hJ4KA/mz5nFq+cEoPs12UybAqZWKbyIaZZyLbJebKl5FkLpsGBkrplJdjvUoSQ==}
+ engines: {node: '>=18'}
+
+ '@xhmikosr/decompress@10.0.1':
+ resolution: {integrity: sha512-6uHnEEt5jv9ro0CDzqWlFgPycdE+H+kbJnwyxgZregIMLQ7unQSCNVsYG255FoqU8cP46DyggI7F7LohzEl8Ag==}
+ engines: {node: '>=18'}
+
+ '@xhmikosr/downloader@15.0.1':
+ resolution: {integrity: sha512-fiuFHf3Dt6pkX8HQrVBsK0uXtkgkVlhrZEh8b7VgoDqFf+zrgFBPyrwCqE/3nDwn3hLeNz+BsrS7q3mu13Lp1g==}
+ engines: {node: '>=18'}
+
+ '@xhmikosr/os-filter-obj@3.0.0':
+ resolution: {integrity: sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A==}
+ engines: {node: ^14.14.0 || >=16.0.0}
+
+ '@xtuc/ieee754@1.2.0':
+ resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
+
+ '@xtuc/long@4.2.2':
+ resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
+
+ abbrev@1.1.1:
+ resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
+
+ abort-controller@3.0.0:
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
+
+ abstract-logging@2.0.1:
+ resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
+
+ accepts@2.0.0:
+ resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
+ engines: {node: '>= 0.6'}
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -531,25 +1843,57 @@ packages:
resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
engines: {node: '>=0.4.0'}
- acorn@8.14.0:
- resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
- engines: {node: '>=0.4.0'}
-
acorn@8.14.1:
resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
engines: {node: '>=0.4.0'}
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
agent-base@7.1.3:
resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==}
engines: {node: '>= 14'}
- aggregate-error@3.1.0:
- resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
- engines: {node: '>=8'}
+ ajv-formats@2.1.1:
+ resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
+ peerDependencies:
+ ajv: ^8.0.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+
+ ajv-formats@3.0.1:
+ resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==}
+ peerDependencies:
+ ajv: ^8.0.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+
+ ajv-keywords@3.5.2:
+ resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
+ peerDependencies:
+ ajv: ^6.9.1
+
+ ajv-keywords@5.1.0:
+ resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
+ peerDependencies:
+ ajv: ^8.8.2
ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ ajv@8.17.1:
+ resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+
+ ansi-align@3.0.1:
+ resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
+
+ ansi-colors@4.1.3:
+ resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
+ engines: {node: '>=6'}
+
ansi-escapes@4.3.2:
resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
engines: {node: '>=8'}
@@ -558,77 +1902,157 @@ packages:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
- ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
+ ansi-regex@6.1.0:
+ resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
+ engines: {node: '>=12'}
ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
+ ansi-styles@5.2.0:
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
+
+ ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+
+ ansis@3.16.0:
+ resolution: {integrity: sha512-sU7d/tfZiYrsIAXbdL/CNZld5bCkruzwT5KmqmadCJYxuLxHAOBjidxD5+iLmN/6xEfjcQq1l7OpsiCBlc4LzA==}
+ engines: {node: '>=14'}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ app-root-path@3.1.0:
+ resolution: {integrity: sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==}
+ engines: {node: '>= 6.0.0'}
+
+ append-field@1.0.0:
+ resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==}
+
+ aproba@2.0.0:
+ resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
+
+ arch@3.0.0:
+ resolution: {integrity: sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==}
+
+ are-we-there-yet@2.0.0:
+ resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
+ engines: {node: '>=10'}
+ deprecated: This package is no longer supported.
+
arg@4.1.3:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
+ argon2@0.41.1:
+ resolution: {integrity: sha512-dqCW8kJXke8Ik+McUcMDltrbuAWETPyU6iq+4AhxqKphWi7pChB/Zgd/Tp/o8xRLbg8ksMj46F/vph9wnxpTzQ==}
+ engines: {node: '>=16.17.0'}
+
+ argparse@1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- array-buffer-byte-length@1.0.2:
- resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
- engines: {node: '>= 0.4'}
+ array-timsort@1.0.3:
+ resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==}
- array-includes@3.1.8:
- resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
- engines: {node: '>= 0.4'}
+ asap@2.0.6:
+ resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ async-hook-jl@1.7.6:
+ resolution: {integrity: sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==}
+ engines: {node: ^4.7 || >=6.9 || >=7.3}
+
+ async-lock@1.4.1:
+ resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==}
+
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ atomic-sleep@1.0.0:
+ resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
+ engines: {node: '>=8.0.0'}
+
+ avvio@9.1.0:
+ resolution: {integrity: sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==}
+
+ axios@1.8.4:
+ resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==}
+
+ b4a@1.6.7:
+ resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==}
+
+ babel-jest@29.7.0:
+ resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.8.0
+
+ babel-plugin-istanbul@6.1.1:
+ resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
engines: {node: '>=8'}
- array.prototype.findlast@1.2.5:
- resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
- engines: {node: '>= 0.4'}
+ babel-plugin-jest-hoist@29.6.3:
+ resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- array.prototype.flat@1.3.3:
- resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
- engines: {node: '>= 0.4'}
+ babel-preset-current-node-syntax@1.1.0:
+ resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
- array.prototype.flatmap@1.3.3:
- resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
- engines: {node: '>= 0.4'}
-
- array.prototype.tosorted@1.1.4:
- resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
- engines: {node: '>= 0.4'}
-
- arraybuffer.prototype.slice@1.0.4:
- resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
- engines: {node: '>= 0.4'}
-
- ast-types@0.13.4:
- resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==}
- engines: {node: '>=4'}
-
- async-function@1.0.0:
- resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
- engines: {node: '>= 0.4'}
-
- available-typed-arrays@1.0.7:
- resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
- engines: {node: '>= 0.4'}
+ babel-preset-jest@29.6.3:
+ resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.0.0
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ bare-events@2.5.4:
+ resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==}
+
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- basic-ftp@5.0.5:
- resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==}
- engines: {node: '>=10.0.0'}
+ bcrypt@5.1.1:
+ resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==}
+ engines: {node: '>= 10.0.0'}
+
+ bin-version-check@5.1.0:
+ resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==}
+ engines: {node: '>=12'}
+
+ bin-version@6.0.0:
+ resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==}
+ engines: {node: '>=12'}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+ bl@6.1.0:
+ resolution: {integrity: sha512-ClDyJGQkc8ZtzdAAbAwBmhMSpwN/sC9HA8jxdYm6nVUbCfZbe2mgza4qh7AuEYyEPB/c4Kznf9s66bnsKMQDjw==}
+
+ body-parser@2.1.0:
+ resolution: {integrity: sha512-/hPxh61E+ll0Ujp24Ilm64cykicul1ypfwjVttduAiEdtnJFvLePSrIPk+HMImtNv5270wOGCb1Tns2rybMkoQ==}
+ engines: {node: '>=18'}
+
+ boxen@5.1.2:
+ resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==}
+ engines: {node: '>=10'}
+
brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
@@ -639,21 +2063,60 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
+ browserslist@4.24.4:
+ resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ bs-logger@0.2.6:
+ resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==}
+ engines: {node: '>= 6'}
+
+ bser@2.1.1:
+ resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
+
+ buffer-crc32@0.2.13:
+ resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
+
+ buffer-equal-constant-time@1.0.1:
+ resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
+ bundle-name@4.1.0:
+ resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
+ engines: {node: '>=18'}
+
busboy@1.6.0:
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
engines: {node: '>=10.16.0'}
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
+ cacheable-lookup@7.0.0:
+ resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
+ engines: {node: '>=14.16'}
+
+ cacheable-request@10.2.14:
+ resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==}
+ engines: {node: '>=14.16'}
+
+ cacheable@1.8.9:
+ resolution: {integrity: sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==}
+
call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
- call-bind@1.0.8:
- resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
- engines: {node: '>= 0.4'}
-
call-bound@1.0.4:
resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
engines: {node: '>= 0.4'}
@@ -662,32 +2125,57 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
- camel-case@3.0.0:
- resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==}
+ camelcase@5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
- caniuse-lite@1.0.30001701:
- resolution: {integrity: sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==}
+ camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
- chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
-
- chalk@3.0.0:
- resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
- engines: {node: '>=8'}
+ caniuse-lite@1.0.30001706:
+ resolution: {integrity: sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==}
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
- change-case@3.1.0:
- resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==}
+ char-regex@1.0.2:
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
chardet@0.7.0:
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
- clean-stack@2.2.0:
- resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
+ check-disk-space@3.4.0:
+ resolution: {integrity: sha512-drVkSqfwA+TvuEhFipiR1OC9boEGZL5RrWvVsOthdcvQNXyCCuKkEiTOTXZ7qxSf/GLwq4GvzfrQD/Wz325hgw==}
+ engines: {node: '>=16'}
+
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ chokidar@4.0.3:
+ resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+ engines: {node: '>= 14.16.0'}
+
+ chownr@2.0.0:
+ resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
+ engines: {node: '>=10'}
+
+ chrome-trace-event@1.0.4:
+ resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
+ engines: {node: '>=6.0'}
+
+ ci-info@3.9.0:
+ resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
+ engines: {node: '>=8'}
+
+ cjs-module-lexer@1.4.3:
+ resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
+
+ cli-boxes@2.2.1:
+ resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==}
engines: {node: '>=6'}
cli-cursor@3.1.0:
@@ -698,75 +2186,182 @@ packages:
resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
engines: {node: '>=6'}
- cli-width@3.0.0:
- resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
- engines: {node: '>= 10'}
+ cli-table3@0.6.5:
+ resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==}
+ engines: {node: 10.* || >= 12.*}
- client-only@0.0.1:
- resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
+ cli-width@4.1.0:
+ resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
+ engines: {node: '>= 12'}
+
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
clone@1.0.4:
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
engines: {node: '>=0.8'}
- color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ cls-hooked@4.2.2:
+ resolution: {integrity: sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==}
+ engines: {node: ^4.7 || >=6.9 || >=7.3 || >=8.2.1}
+
+ cluster-key-slot@1.1.2:
+ resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
+ engines: {node: '>=0.10.0'}
+
+ co@4.6.0:
+ resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+
+ collect-v8-coverage@1.0.2:
+ resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==}
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
- color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
-
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- color-string@1.9.1:
- resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+ color-support@1.1.3:
+ resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
+ hasBin: true
- color@4.2.3:
- resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
- engines: {node: '>=12.5.0'}
+ colorette@2.0.20:
+ resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
- commander@10.0.1:
- resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
- engines: {node: '>=14'}
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ commander@11.1.0:
+ resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
+ engines: {node: '>=16'}
+
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+
+ commander@6.2.1:
+ resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
+ engines: {node: '>= 6'}
+
+ commander@8.3.0:
+ resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+ engines: {node: '>= 12'}
+
+ comment-json@4.2.5:
+ resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==}
+ engines: {node: '>= 6'}
+
+ component-emitter@1.3.1:
+ resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==}
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- constant-case@2.0.0:
- resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==}
+ concat-stream@1.6.2:
+ resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
+ engines: {'0': node >= 0.8}
- core-js-pure@3.41.0:
- resolution: {integrity: sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==}
+ connection-string@4.4.0:
+ resolution: {integrity: sha512-D4xsUjSoE8m/B5yMOvCIHY+2ME6FIZhCq0NzBBT57Q8BuL7ArFhBK04osOfReoW4KFr5ztzFwWRdmnv9rCvu2w==}
+ engines: {node: '>=14'}
+
+ consola@3.4.2:
+ resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+
+ console-control-strings@1.1.0:
+ resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
+
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ content-disposition@1.0.0:
+ resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
+ engines: {node: '>= 0.6'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cookie-signature@1.2.2:
+ resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
+ engines: {node: '>=6.6.0'}
+
+ cookie@0.7.1:
+ resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
+ engines: {node: '>= 0.6'}
+
+ cookie@1.0.2:
+ resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
+ engines: {node: '>=18'}
+
+ cookiejar@2.1.4:
+ resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ cors@2.8.5:
+ resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
+ engines: {node: '>= 0.10'}
+
+ cosmiconfig@8.3.6:
+ resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ typescript: '>=4.9.5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ create-jest@29.7.0:
+ resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+ cron@3.5.0:
+ resolution: {integrity: sha512-0eYZqCnapmxYcV06uktql93wNWdlTmmBFP2iYz+JPVcQqlyFYcn1lFuIk4R54pkOmE7mcldTAPZv6X5XA4Q46A==}
+
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ dateformat@4.6.3:
+ resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
- data-uri-to-buffer@6.0.2:
- resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
- engines: {node: '>= 14'}
+ dayjs@1.11.13:
+ resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
- data-view-buffer@1.0.2:
- resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
- engines: {node: '>= 0.4'}
+ debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
- data-view-byte-length@1.0.2:
- resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-offset@1.0.1:
- resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
- engines: {node: '>= 0.4'}
+ debug@4.3.6:
+ resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
debug@4.4.0:
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
@@ -777,65 +2372,148 @@ packages:
supports-color:
optional: true
- deep-extend@0.6.0:
- resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
- engines: {node: '>=4.0.0'}
+ decompress-response@6.0.0:
+ resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
+ engines: {node: '>=10'}
+
+ dedent@1.5.3:
+ resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==}
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
+ default-browser-id@5.0.0:
+ resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==}
+ engines: {node: '>=18'}
+
+ default-browser@5.2.1:
+ resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==}
+ engines: {node: '>=18'}
+
defaults@1.0.4:
resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
- define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
+ defaults@3.0.0:
+ resolution: {integrity: sha512-RsqXDEAALjfRTro+IFNKpcPCt0/Cy2FqHSIlnomiJp9YGadpQnrtbRpSgN2+np21qHcIKiva4fiOQGjS9/qR/A==}
+ engines: {node: '>=18'}
- define-properties@1.2.1:
- resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
- engines: {node: '>= 0.4'}
+ defer-to-connect@2.0.1:
+ resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
+ engines: {node: '>=10'}
- degenerator@5.0.1:
- resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==}
- engines: {node: '>= 14'}
+ define-lazy-prop@3.0.0:
+ resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
+ engines: {node: '>=12'}
- del@5.1.0:
- resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==}
- engines: {node: '>=8'}
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ delegates@1.0.0:
+ resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
detect-libc@2.0.3:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
engines: {node: '>=8'}
+ detect-newline@3.1.0:
+ resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
+ engines: {node: '>=8'}
+
+ dezalgo@1.0.4:
+ resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
+
+ diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
diff@4.0.2:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
- doctrine@2.1.0:
- resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
- engines: {node: '>=0.10.0'}
-
- dot-case@2.1.1:
- resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==}
+ dotenv-expand@12.0.1:
+ resolution: {integrity: sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==}
+ engines: {node: '>=12'}
dotenv@16.0.3:
resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==}
engines: {node: '>=12'}
+ dotenv@16.4.7:
+ resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
+ engines: {node: '>=12'}
+
dunder-proto@1.0.1:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'}
+ duplexify@4.1.3:
+ resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ ecdsa-sig-formatter@1.0.11:
+ resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ ejs@3.1.10:
+ resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+
+ electron-to-chromium@1.5.122:
+ resolution: {integrity: sha512-EML1wnwkY5MFh/xUnCvY8FrhUuKzdYhowuZExZOfwJo+Zu9OsNCI23Cgl5y7awy7HrUHSwB1Z8pZX5TI34lsUg==}
+
+ emitter-listener@1.1.2:
+ resolution: {integrity: sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==}
+
+ emittery@0.13.1:
+ resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
+ engines: {node: '>=12'}
+
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
- es-abstract@1.23.9:
- resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==}
- engines: {node: '>= 0.4'}
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
+ end-of-stream@1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+
+ enhanced-resolve@5.18.1:
+ resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
+ engines: {node: '>=10.13.0'}
+
+ error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
es-define-property@1.0.1:
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
@@ -845,9 +2523,8 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
- es-iterator-helpers@1.2.1:
- resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==}
- engines: {node: '>= 0.4'}
+ es-module-lexer@1.6.0:
+ resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==}
es-object-atoms@1.1.1:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
@@ -857,28 +2534,24 @@ packages:
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
engines: {node: '>= 0.4'}
- es-shim-unscopables@1.1.0:
- resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==}
- engines: {node: '>= 0.4'}
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
- es-to-primitive@1.3.0:
- resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
- engines: {node: '>= 0.4'}
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
+ escape-string-regexp@2.0.0:
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- escodegen@2.1.0:
- resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
- engines: {node: '>=6.0'}
-
eslint-config-prettier@10.1.1:
resolution: {integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==}
+ hasBin: true
peerDependencies:
eslint: '>=7.0.0'
@@ -886,17 +2559,19 @@ packages:
resolution: {integrity: sha512-2tktqUAT+Q3hCAU0iSf4xAN1k9zOpjK5WO8104mB0rT/dGhOa09582HN5HlbxNbPRZ0THV7nLGvzugcNOSjzfA==}
engines: {node: '>=6'}
- eslint-plugin-react-hooks@5.2.0:
- resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==}
- engines: {node: '>=10'}
+ eslint-plugin-prettier@5.2.3:
+ resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
-
- eslint-plugin-react@7.37.4:
- resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==}
- engines: {node: '>=4'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
+ '@types/eslint': '>=8.0.0'
+ eslint: '>=8.0.0'
+ eslint-config-prettier: '*'
+ prettier: '>=3.0.0'
+ peerDependenciesMeta:
+ '@types/eslint':
+ optional: true
+ eslint-config-prettier:
+ optional: true
eslint-plugin-turbo@2.4.4:
resolution: {integrity: sha512-myEnQTjr3FkI0j1Fu0Mqnv1z8n0JW5iFTOUNzHaEevjzl+1uzMSsFwks/x8i3rGmI3EYtC1BY8K2B2pS0Vfx6w==}
@@ -904,6 +2579,10 @@ packages:
eslint: '>6.6.0'
turbo: '>2.0.0'
+ eslint-scope@5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+
eslint-scope@8.3.0:
resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -919,6 +2598,7 @@ packages:
eslint@9.22.0:
resolution: {integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ hasBin: true
peerDependencies:
jiti: '*'
peerDependenciesMeta:
@@ -932,6 +2612,7 @@ packages:
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
+ hasBin: true
esquery@1.6.0:
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
@@ -941,6 +2622,10 @@ packages:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
+ estraverse@4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+
estraverse@5.3.0:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
@@ -949,20 +2634,60 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
execa@5.1.1:
resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
engines: {node: '>=10'}
+ exit@0.1.2:
+ resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
+ engines: {node: '>= 0.8.0'}
+
+ expect@29.7.0:
+ resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ express@5.0.1:
+ resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==}
+ engines: {node: '>= 18'}
+
+ ext-list@2.2.2:
+ resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
+ engines: {node: '>=0.10.0'}
+
+ ext-name@5.0.0:
+ resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==}
+ engines: {node: '>=4'}
+
external-editor@3.1.0:
resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
engines: {node: '>=4'}
+ fast-copy@3.0.2:
+ resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==}
+
+ fast-decode-uri-component@1.0.1:
+ resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
+
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
- fast-glob@3.3.1:
- resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
- engines: {node: '>=8.6.0'}
+ fast-diff@1.3.0:
+ resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
+
+ fast-fifo@1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
fast-glob@3.3.3:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
@@ -971,28 +2696,80 @@ packages:
fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ fast-json-stringify@6.0.1:
+ resolution: {integrity: sha512-s7SJE83QKBZwg54dIbD5rCtzOBVD43V1ReWXXYqBgwCwHLYAAT0RQc/FmrQglXqWPpz6omtryJQOau5jI4Nrvg==}
+
fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ fast-querystring@1.1.2:
+ resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==}
+
+ fast-redact@3.5.0:
+ resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==}
+ engines: {node: '>=6'}
+
+ fast-safe-stringify@2.1.1:
+ resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
+
+ fast-uri@3.0.6:
+ resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
+
+ fastify-plugin@5.0.1:
+ resolution: {integrity: sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ==}
+
+ fastify@5.2.1:
+ resolution: {integrity: sha512-rslrNBF67eg8/Gyn7P2URV8/6pz8kSAscFL4EThZJ8JBMaXacVdVE4hmUcnPNKERl5o/xTiBSLfdowBRhVF1WA==}
+
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
- figures@3.2.0:
- resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
- engines: {node: '>=8'}
+ fb-watchman@2.0.2:
+ resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
+ file-type@19.6.0:
+ resolution: {integrity: sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==}
+ engines: {node: '>=18'}
+
+ filelist@1.0.4:
+ resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
+
+ filename-reserved-regex@3.0.0:
+ resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ filenamify@6.0.0:
+ resolution: {integrity: sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==}
+ engines: {node: '>=16'}
+
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
+ finalhandler@2.1.0:
+ resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
+ engines: {node: '>= 0.8'}
+
+ find-my-way@9.2.0:
+ resolution: {integrity: sha512-d3uCir8Hmg7W1Ywp8nKf2lJJYU9Nwinvo+1D39Dn09nz65UKXIxUh7j7K8zeWhxqe1WrkS7FJyON/Q/3lPoc6w==}
+ engines: {node: '>=14'}
+
+ find-up@4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+
find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
+ find-versions@5.1.0:
+ resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==}
+ engines: {node: '>=12'}
+
flat-cache@4.0.1:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
engines: {node: '>=16'}
@@ -1000,31 +2777,96 @@ packages:
flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
- for-each@0.3.5:
- resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
- engines: {node: '>= 0.4'}
+ follow-redirects@1.15.9:
+ resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ foreground-child@3.3.1:
+ resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
+ engines: {node: '>=14'}
+
+ fork-ts-checker-webpack-plugin@9.0.2:
+ resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==}
+ engines: {node: '>=12.13.0', yarn: '>=1.0.0'}
+ peerDependencies:
+ typescript: '>3.6.0'
+ webpack: ^5.11.0
+
+ form-data-encoder@2.1.4:
+ resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
+ engines: {node: '>= 14.17'}
+
+ form-data@4.0.2:
+ resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
+ engines: {node: '>= 6'}
+
+ formidable@3.5.2:
+ resolution: {integrity: sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==}
+
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
+ fresh@2.0.0:
+ resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
+ engines: {node: '>= 0.8'}
fs-extra@10.1.0:
resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
engines: {node: '>=12'}
+ fs-minipass@2.1.0:
+ resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
+ engines: {node: '>= 8'}
+
+ fs-monkey@1.0.6:
+ resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==}
+
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
- function.prototype.name@1.1.8:
- resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
- engines: {node: '>= 0.4'}
+ gauge@3.0.2:
+ resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
+ engines: {node: '>=10'}
+ deprecated: This package is no longer supported.
- functions-have-names@1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ generic-pool@3.9.0:
+ resolution: {integrity: sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==}
+ engines: {node: '>= 4'}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
get-intrinsic@1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
+ get-package-type@0.1.0:
+ resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
+ engines: {node: '>=8.0.0'}
+
get-proto@1.0.1:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
@@ -1033,13 +2875,9 @@ packages:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
- get-symbol-description@1.1.0:
- resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
- engines: {node: '>= 0.4'}
-
- get-uri@6.0.4:
- resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==}
- engines: {node: '>= 14'}
+ get-stream@9.0.1:
+ resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
+ engines: {node: '>=18'}
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@@ -1049,8 +2887,25 @@ packages:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
+ glob-to-regexp@0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+
+ glob@10.4.5:
+ resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+ hasBin: true
+
+ glob@11.0.1:
+ resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==}
+ engines: {node: 20 || >=22}
+ hasBin: true
+
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
@@ -1060,50 +2915,27 @@ packages:
resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==}
engines: {node: '>=18'}
- globalthis@1.0.4:
- resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
- engines: {node: '>= 0.4'}
-
- globby@10.0.2:
- resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==}
- engines: {node: '>=8'}
-
gopd@1.2.0:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'}
+ got@13.0.0:
+ resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==}
+ engines: {node: '>=16'}
+
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- gradient-string@2.0.2:
- resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==}
- engines: {node: '>=10'}
-
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
- handlebars@4.7.8:
- resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
- engines: {node: '>=0.4.7'}
-
- has-bigints@1.1.0:
- resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
- engines: {node: '>= 0.4'}
-
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
-
- has-proto@1.2.0:
- resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
- engines: {node: '>= 0.4'}
+ has-own-prop@2.0.0:
+ resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==}
+ engines: {node: '>=8'}
has-symbols@1.1.0:
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
@@ -1113,17 +2945,45 @@ packages:
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
engines: {node: '>= 0.4'}
+ has-unicode@2.0.1:
+ resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
+
hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
- header-case@1.0.1:
- resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==}
+ help-me@5.0.0:
+ resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==}
+
+ hexoid@2.0.0:
+ resolution: {integrity: sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==}
+ engines: {node: '>=8'}
+
+ hookified@1.8.1:
+ resolution: {integrity: sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==}
+
+ html-escaper@2.0.2:
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+
+ http-cache-semantics@4.1.1:
+ resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
+
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
http-proxy-agent@7.0.2:
resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
engines: {node: '>= 14'}
+ http2-wrapper@2.2.1:
+ resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
+ engines: {node: '>=10.19.0'}
+
+ https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
https-proxy-agent@7.0.6:
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
engines: {node: '>= 14'}
@@ -1136,6 +2996,14 @@ packages:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
+ iconv-lite@0.5.2:
+ resolution: {integrity: sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==}
+ engines: {node: '>=0.10.0'}
+
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
@@ -1147,255 +3015,477 @@ packages:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
+ import-local@3.2.0:
+ resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
+ engines: {node: '>=8'}
+ hasBin: true
+
imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
- indent-string@4.0.0:
- resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
- engines: {node: '>=8'}
-
inflight@1.0.6:
resolution: {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.
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- ini@1.3.8:
- resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+ inspect-with-kind@1.0.5:
+ resolution: {integrity: sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==}
- inquirer@7.3.3:
- resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==}
- engines: {node: '>=8.0.0'}
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
- inquirer@8.2.6:
- resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==}
- engines: {node: '>=12.0.0'}
+ ipaddr.js@2.2.0:
+ resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==}
+ engines: {node: '>= 10'}
- internal-slot@1.1.0:
- resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
- engines: {node: '>= 0.4'}
+ is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
- ip-address@9.0.5:
- resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==}
- engines: {node: '>= 12'}
-
- is-array-buffer@3.0.5:
- resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
- engines: {node: '>= 0.4'}
-
- is-arrayish@0.3.2:
- resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
-
- is-async-function@2.1.1:
- resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
- engines: {node: '>= 0.4'}
-
- is-bigint@1.1.0:
- resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
- engines: {node: '>= 0.4'}
-
- is-boolean-object@1.2.2:
- resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
- engines: {node: '>= 0.4'}
-
- is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
is-core-module@2.16.1:
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
engines: {node: '>= 0.4'}
- is-data-view@1.0.2:
- resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
- engines: {node: '>= 0.4'}
-
- is-date-object@1.1.0:
- resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
- engines: {node: '>= 0.4'}
+ is-docker@3.0.0:
+ resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ hasBin: true
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
- is-finalizationregistry@1.1.1:
- resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
- engines: {node: '>= 0.4'}
-
is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
- is-generator-function@1.1.0:
- resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
- engines: {node: '>= 0.4'}
+ is-generator-fn@2.1.0:
+ resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
+ engines: {node: '>=6'}
is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
+ is-inside-container@1.0.0:
+ resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+ engines: {node: '>=14.16'}
+ hasBin: true
+
is-interactive@1.0.0:
resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
engines: {node: '>=8'}
- is-lower-case@1.1.3:
- resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==}
-
- is-map@2.0.3:
- resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
- engines: {node: '>= 0.4'}
-
- is-number-object@1.1.1:
- resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
- engines: {node: '>= 0.4'}
-
is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
- is-path-cwd@2.2.0:
- resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==}
- engines: {node: '>=6'}
+ is-plain-obj@1.1.0:
+ resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
+ engines: {node: '>=0.10.0'}
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
- is-regex@1.2.1:
- resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
- engines: {node: '>= 0.4'}
-
- is-set@2.0.3:
- resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
- engines: {node: '>= 0.4'}
-
- is-shared-array-buffer@1.0.4:
- resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
- engines: {node: '>= 0.4'}
+ is-promise@4.0.0:
+ resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
is-stream@2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
- is-string@1.1.1:
- resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
- engines: {node: '>= 0.4'}
-
- is-symbol@1.1.1:
- resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
- engines: {node: '>= 0.4'}
-
- is-typed-array@1.1.15:
- resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
- engines: {node: '>= 0.4'}
+ is-stream@4.0.1:
+ resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
+ engines: {node: '>=18'}
is-unicode-supported@0.1.0:
resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
engines: {node: '>=10'}
- is-upper-case@1.1.2:
- resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==}
+ is-wsl@3.1.0:
+ resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
+ engines: {node: '>=16'}
- is-weakmap@2.0.2:
- resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
- engines: {node: '>= 0.4'}
-
- is-weakref@1.1.1:
- resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
- engines: {node: '>= 0.4'}
-
- is-weakset@2.0.4:
- resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
- engines: {node: '>= 0.4'}
-
- isarray@2.0.5:
- resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
-
- isbinaryfile@4.0.10:
- resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==}
- engines: {node: '>= 8.0.0'}
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- iterator.prototype@1.1.5:
- resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
- engines: {node: '>= 0.4'}
+ istanbul-lib-coverage@3.2.2:
+ resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
+ engines: {node: '>=8'}
+
+ istanbul-lib-instrument@5.2.1:
+ resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
+ engines: {node: '>=8'}
+
+ istanbul-lib-instrument@6.0.3:
+ resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
+ engines: {node: '>=10'}
+
+ istanbul-lib-report@3.0.1:
+ resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
+ engines: {node: '>=10'}
+
+ istanbul-lib-source-maps@4.0.1:
+ resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
+ engines: {node: '>=10'}
+
+ istanbul-reports@3.1.7:
+ resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
+ engines: {node: '>=8'}
+
+ iterare@1.2.1:
+ resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==}
+ engines: {node: '>=6'}
+
+ jackspeak@3.4.3:
+ resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+
+ jackspeak@4.1.0:
+ resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==}
+ engines: {node: 20 || >=22}
+
+ jake@10.9.2:
+ resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ jest-changed-files@29.7.0:
+ resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-circus@29.7.0:
+ resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-cli@29.7.0:
+ resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ jest-config@29.7.0:
+ resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@types/node': '*'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ ts-node:
+ optional: true
+
+ jest-diff@29.7.0:
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-docblock@29.7.0:
+ resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-each@29.7.0:
+ resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-environment-node@29.7.0:
+ resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-get-type@29.6.3:
+ resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-haste-map@29.7.0:
+ resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-leak-detector@29.7.0:
+ resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-matcher-utils@29.7.0:
+ resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-message-util@29.7.0:
+ resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-mock@29.7.0:
+ resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-pnp-resolver@1.2.3:
+ resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+
+ jest-regex-util@29.6.3:
+ resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-resolve-dependencies@29.7.0:
+ resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-resolve@29.7.0:
+ resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-runner@29.7.0:
+ resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-runtime@29.7.0:
+ resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-snapshot@29.7.0:
+ resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-util@29.7.0:
+ resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-validate@29.7.0:
+ resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-watcher@29.7.0:
+ resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-worker@27.5.1:
+ resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
+ engines: {node: '>= 10.13.0'}
+
+ jest-worker@29.7.0:
+ resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest@29.7.0:
+ resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ joycon@3.1.1:
+ resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
+ engines: {node: '>=10'}
+
+ js-md4@0.3.2:
+ resolution: {integrity: sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==}
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ js-yaml@3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+
js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
- jsbn@1.1.0:
- resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ json-schema-ref-resolver@2.0.1:
+ resolution: {integrity: sha512-HG0SIB9X4J8bwbxCbnd5FfPEbcXAJYTi1pBJeP/QPON+w8ovSME8iRG+ElHNxZNX2Qh6eYn1GdzJFS4cDFfx0Q==}
+
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonc-parser@3.3.1:
+ resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
+
jsonfile@6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
- jsx-ast-utils@3.3.5:
- resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
- engines: {node: '>=4.0'}
+ jsonwebtoken@9.0.2:
+ resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==}
+ engines: {node: '>=12', npm: '>=6'}
+
+ jwa@1.4.1:
+ resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==}
+
+ jwa@2.0.0:
+ resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==}
+
+ jws@3.2.2:
+ resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==}
+
+ jws@4.0.0:
+ resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==}
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ keyv@5.3.2:
+ resolution: {integrity: sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==}
+
+ kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+
+ kleur@3.0.3:
+ resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
+ engines: {node: '>=6'}
+
+ leven@3.1.0:
+ resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+ engines: {node: '>=6'}
+
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
+ light-my-request@6.6.0:
+ resolution: {integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ loader-runner@4.3.0:
+ resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
+ engines: {node: '>=6.11.5'}
+
+ locate-path@5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+
locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
- lodash.get@4.4.2:
- resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
+ lodash.includes@4.3.0:
+ resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
+
+ lodash.isboolean@3.0.3:
+ resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
+
+ lodash.isinteger@4.0.4:
+ resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
+
+ lodash.isnumber@3.0.3:
+ resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==}
+
+ lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+
+ lodash.isstring@4.0.1:
+ resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==}
+
+ lodash.memoize@4.1.2:
+ resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ lodash.once@4.1.1:
+ resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==}
+
lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
- log-symbols@3.0.0:
- resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==}
- engines: {node: '>=8'}
-
log-symbols@4.1.0:
resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
engines: {node: '>=10'}
- loose-envify@1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ lowercase-keys@3.0.0:
+ resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- lower-case-first@1.0.2:
- resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==}
+ lru-cache@10.4.3:
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
- lower-case@1.1.4:
- resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==}
+ lru-cache@11.0.2:
+ resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==}
+ engines: {node: 20 || >=22}
- lru-cache@7.18.3:
- resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ luxon@3.5.0:
+ resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
engines: {node: '>=12'}
+ magic-string@0.30.17:
+ resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+
+ make-dir@3.1.0:
+ resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
+ engines: {node: '>=8'}
+
+ make-dir@4.0.0:
+ resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
+ engines: {node: '>=10'}
+
make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+ makeerror@1.0.12:
+ resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
+
math-intrinsics@1.1.0:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
+ media-typer@1.1.0:
+ resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
+ engines: {node: '>= 0.8'}
+
+ memfs@3.5.3:
+ resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==}
+ engines: {node: '>= 4.0.0'}
+
+ merge-descriptors@2.0.0:
+ resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
+ engines: {node: '>=18'}
+
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -1403,17 +3493,63 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
micromatch@4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-db@1.54.0:
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@3.0.0:
+ resolution: {integrity: sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==}
+ engines: {node: '>= 0.6'}
+
+ mime@2.6.0:
+ resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
+ engines: {node: '>=4.0.0'}
+ hasBin: true
+
+ mime@3.0.0:
+ resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+
mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
+ mimic-response@3.1.0:
+ resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
+ engines: {node: '>=10'}
+
+ mimic-response@4.0.0:
+ resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ minimatch@10.0.1:
+ resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
+ engines: {node: 20 || >=22}
+
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+
minimatch@9.0.5:
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -1421,60 +3557,149 @@ packages:
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ minipass@3.3.6:
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
+
+ minipass@5.0.0:
+ resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
+ engines: {node: '>=8'}
+
+ minipass@7.1.2:
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minizlib@2.1.2:
+ resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
+ engines: {node: '>= 8'}
+
mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
+ hasBin: true
+
+ mkdirp@1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ mnemonist@0.40.0:
+ resolution: {integrity: sha512-kdd8AFNig2AD5Rkih7EPCXhu/iMvwevQFX/uEiGhZyPZi7fHqOoF4V4kHLpCfysxXMgQ4B52kdPMCwARshKvEg==}
+
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- mute-stream@0.0.8:
- resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
+ mssql@11.0.1:
+ resolution: {integrity: sha512-KlGNsugoT90enKlR8/G36H0kTxPthDhmtNUCwEHvgRza5Cjpjoj+P2X6eMpFUDN7pFrJZsKadL4x990G8RBE1w==}
+ engines: {node: '>=18'}
+ hasBin: true
- nanoid@3.3.8:
- resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ multer@1.4.5-lts.1:
+ resolution: {integrity: sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==}
+ engines: {node: '>= 6.0.0'}
+
+ mute-stream@2.0.0:
+ resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
+ engines: {node: ^18.17.0 || >=20.5.0}
+
+ native-duplexpair@1.0.0:
+ resolution: {integrity: sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==}
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ negotiator@1.0.0:
+ resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
+ engines: {node: '>= 0.6'}
+
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
- netmask@2.0.2:
- resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==}
- engines: {node: '>= 0.4.0'}
-
- next@15.2.1:
- resolution: {integrity: sha512-zxbsdQv3OqWXybK5tMkPCBKyhIz63RstJ+NvlfkaLMc/m5MwXgz2e92k+hSKcyBpyADhMk2C31RIiaDjUZae7g==}
- engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
+ nestjs-cls@5.4.1:
+ resolution: {integrity: sha512-hm0CQE6hRjr07yqSTcj50eQwNuZhlOHocX1W0CHpsYo9aDqsEysGkshegvAlC/4NVedTeAU6J0dVjAvNPTMrjQ==}
+ engines: {node: '>=18'}
peerDependencies:
- '@opentelemetry/api': ^1.1.0
- '@playwright/test': ^1.41.2
- babel-plugin-react-compiler: '*'
- react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
- react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
- sass: ^1.3.0
+ '@nestjs/common': '>= 10 < 12'
+ '@nestjs/core': '>= 10 < 12'
+ reflect-metadata: '*'
+ rxjs: '>= 7'
+
+ nestjs-paginate@11.1.1:
+ resolution: {integrity: sha512-PYNTxnQ3ZHGjXfOgqMNtEmMlad1o9M6RoiXPSQtCl3n8MDH+t2igXn9Z9Id6B5SfBnsrvRD9YEi2Zb1EU5g6Fg==}
+ peerDependencies:
+ '@nestjs/common': ^10.0.0 || ^11.0.0
+ '@nestjs/swagger': ^8.0.0 || ^11.0.0
+ express: ^4.21.2 || ^5.0.0
+ fastify: ^4.0.0 || ^5.0.0
+ typeorm: ^0.3.17
+
+ nestjs-pino@4.4.0:
+ resolution: {integrity: sha512-+GMNlcNWDRrMtlQftfcxN+5pV2C25A4wsYIY7cfRJTMW4b8IFKYReDrG1lUp5LGql9fXemmnVJ2Ww10iIkCZPQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0
+ pino: ^7.5.0 || ^8.0.0 || ^9.0.0
+ pino-http: ^6.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0
+ rxjs: ^7.1.0
+
+ node-abort-controller@3.1.1:
+ resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==}
+
+ node-addon-api@5.1.0:
+ resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==}
+
+ node-addon-api@8.3.1:
+ resolution: {integrity: sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==}
+ engines: {node: ^18 || ^20 || >= 21}
+
+ node-emoji@1.11.0:
+ resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==}
+
+ node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
peerDependenciesMeta:
- '@opentelemetry/api':
- optional: true
- '@playwright/test':
- optional: true
- babel-plugin-react-compiler:
- optional: true
- sass:
+ encoding:
optional: true
- no-case@2.3.2:
- resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==}
+ node-gyp-build@4.8.4:
+ resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
+ hasBin: true
- node-plop@0.26.3:
- resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==}
- engines: {node: '>=8.9.4'}
+ node-int64@0.4.0:
+ resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
+
+ node-releases@2.0.19:
+ resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
+
+ nopt@5.0.0:
+ resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ normalize-url@8.0.1:
+ resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==}
+ engines: {node: '>=14.16'}
npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
+ npmlog@5.0.1:
+ resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
+ deprecated: This package is no longer supported.
+
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -1483,25 +3708,16 @@ packages:
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
engines: {node: '>= 0.4'}
- object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
+ obliterator@2.0.5:
+ resolution: {integrity: sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==}
- object.assign@4.1.7:
- resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
- engines: {node: '>= 0.4'}
+ on-exit-leak-free@2.1.2:
+ resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
+ engines: {node: '>=14.0.0'}
- object.entries@1.1.8:
- resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==}
- engines: {node: '>= 0.4'}
-
- object.fromentries@2.0.8:
- resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
- engines: {node: '>= 0.4'}
-
- object.values@1.2.1:
- resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
- engines: {node: '>= 0.4'}
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@@ -1510,14 +3726,17 @@ packages:
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
engines: {node: '>=6'}
+ open@10.1.0:
+ resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==}
+ engines: {node: '>=18'}
+
+ openapi3-ts@4.4.0:
+ resolution: {integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==}
+
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
- ora@4.1.1:
- resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==}
- engines: {node: '>=8'}
-
ora@5.4.1:
resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
engines: {node: '>=10'}
@@ -1526,42 +3745,59 @@ packages:
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
engines: {node: '>=0.10.0'}
- own-keys@1.0.1:
- resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
- engines: {node: '>= 0.4'}
+ p-cancelable@3.0.0:
+ resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==}
+ engines: {node: '>=12.20'}
+
+ p-limit@2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
+ p-locate@4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+
p-locate@5.0.0:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
- p-map@3.0.0:
- resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==}
- engines: {node: '>=8'}
+ p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
- pac-proxy-agent@7.2.0:
- resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==}
- engines: {node: '>= 14'}
-
- pac-resolver@7.0.1:
- resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==}
- engines: {node: '>= 14'}
-
- param-case@2.1.1:
- resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==}
+ package-json-from-dist@1.0.1:
+ resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
- pascal-case@2.0.1:
- resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==}
+ parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
- path-case@2.1.1:
- resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==}
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ passport-jwt@4.0.1:
+ resolution: {integrity: sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==}
+
+ passport-local@1.0.0:
+ resolution: {integrity: sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow==}
+ engines: {node: '>= 0.4.0'}
+
+ passport-strategy@1.0.0:
+ resolution: {integrity: sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==}
+ engines: {node: '>= 0.4.0'}
+
+ passport@0.7.0:
+ resolution: {integrity: sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==}
+ engines: {node: '>= 0.4.0'}
path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
@@ -1578,12 +3814,31 @@ packages:
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ path-scurry@1.11.1:
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
+
+ path-scurry@2.0.0:
+ resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
+ engines: {node: 20 || >=22}
+
+ path-to-regexp@8.2.0:
+ resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
+ engines: {node: '>=16'}
+
path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
- picocolors@1.0.1:
- resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
+ pause@0.0.1:
+ resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==}
+
+ peek-readable@5.4.2:
+ resolution: {integrity: sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==}
+ engines: {node: '>=14.16'}
+
+ pend@1.2.0:
+ resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -1592,162 +3847,310 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
- possible-typed-array-names@1.1.0:
- resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
- engines: {node: '>= 0.4'}
+ picomatch@4.0.2:
+ resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
+ engines: {node: '>=12'}
- postcss@8.4.31:
- resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
- engines: {node: ^10 || ^12 || >=14}
+ pino-abstract-transport@0.5.0:
+ resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==}
+
+ pino-abstract-transport@2.0.0:
+ resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==}
+
+ pino-http@10.4.0:
+ resolution: {integrity: sha512-vjQsKBE+VN1LVchjbfLE7B6nBeGASZNRNKsR68VS0DolTm5R3zo+47JX1wjm0O96dcbvA7vnqt8YqOWlG5nN0w==}
+
+ pino-pretty@13.0.0:
+ resolution: {integrity: sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==}
+ hasBin: true
+
+ pino-std-serializers@7.0.0:
+ resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==}
+
+ pino@9.6.0:
+ resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==}
+ hasBin: true
+
+ pirates@4.0.6:
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ engines: {node: '>= 6'}
+
+ piscina@4.9.2:
+ resolution: {integrity: sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==}
+
+ pkg-dir@4.2.0:
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
+
+ pluralize@8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
+ prettier-linter-helpers@1.0.0:
+ resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
+ engines: {node: '>=6.0.0'}
+
prettier@3.5.3:
resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
engines: {node: '>=14'}
- prop-types@15.8.1:
- resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ pretty-format@29.7.0:
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- proxy-agent@6.5.0:
- resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==}
- engines: {node: '>= 14'}
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ process-warning@4.0.1:
+ resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==}
+
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+
+ prompts@2.4.2:
+ resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
+ engines: {node: '>= 6'}
+
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+ pump@3.0.2:
+ resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
+ pure-rand@6.1.0:
+ resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
+
+ qs@6.13.0:
+ resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
+ engines: {node: '>=0.6'}
+
+ qs@6.14.0:
+ resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
+ engines: {node: '>=0.6'}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- rc@1.2.8:
- resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
+ quick-format-unescaped@4.0.4:
+ resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
- react-dom@19.0.0:
- resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
- peerDependencies:
- react: ^19.0.0
+ quick-lru@5.1.1:
+ resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
+ engines: {node: '>=10'}
- react-is@16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+ randombytes@2.1.0:
+ resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
- react@19.0.0:
- resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
- engines: {node: '>=0.10.0'}
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@3.0.0:
+ resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==}
+ engines: {node: '>= 0.8'}
+
+ react-is@18.3.1:
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
readable-stream@3.6.2:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
engines: {node: '>= 6'}
- reflect.getprototypeof@1.0.10:
- resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
- engines: {node: '>= 0.4'}
+ readable-stream@4.7.0:
+ resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- regenerator-runtime@0.14.1:
- resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
- regexp.prototype.flags@1.5.4:
- resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
- engines: {node: '>= 0.4'}
+ readdirp@4.1.2:
+ resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
+ engines: {node: '>= 14.18.0'}
- registry-auth-token@3.3.2:
- resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==}
+ real-require@0.2.0:
+ resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
+ engines: {node: '>= 12.13.0'}
- registry-url@3.1.0:
- resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==}
+ redis@4.7.0:
+ resolution: {integrity: sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ==}
+
+ reflect-metadata@0.2.2:
+ resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==}
+
+ repeat-string@1.6.1:
+ resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
+ engines: {node: '>=0.10'}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
+ resolve-alpn@1.2.1:
+ resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
+
+ resolve-cwd@3.0.0:
+ resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
+ engines: {node: '>=8'}
+
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
+ resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+
+ resolve.exports@2.0.3:
+ resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==}
+ engines: {node: '>=10'}
+
resolve@1.22.10:
resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
engines: {node: '>= 0.4'}
+ hasBin: true
- resolve@2.0.0-next.5:
- resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
+ responselike@3.0.0:
+ resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
+ engines: {node: '>=14.16'}
restore-cursor@3.1.0:
resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
engines: {node: '>=8'}
+ ret@0.5.0:
+ resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==}
+ engines: {node: '>=10'}
+
reusify@1.1.0:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ rfdc@1.4.1:
+ resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
+
rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
- run-async@2.4.1:
- resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
- engines: {node: '>=0.12.0'}
+ router@2.1.0:
+ resolution: {integrity: sha512-/m/NSLxeYEgWNtyC+WtNHCF7jbGxOibVWKnn+1Psff4dJGOfoXP+MuC/f2CwSmyiHdOIzYnYFp4W6GxWfekaLA==}
+ engines: {node: '>= 18'}
+
+ run-applescript@7.0.0:
+ resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
+ engines: {node: '>=18'}
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
- rxjs@6.6.7:
- resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==}
- engines: {npm: '>=2.0.0'}
+ rxjs@7.8.1:
+ resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
rxjs@7.8.2:
resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
- safe-array-concat@1.1.3:
- resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
- engines: {node: '>=0.4'}
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
- safe-push-apply@1.0.0:
- resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
- engines: {node: '>= 0.4'}
+ safe-regex2@4.0.1:
+ resolution: {integrity: sha512-goqsB+bSlOmVX+CiFX2PFc1OV88j5jvBqIM+DgqrucHnUguAUNtiNOs+aTadq2NqsLQ+TQ3UEVG3gtSFcdlkCg==}
- safe-regex-test@1.1.0:
- resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
- engines: {node: '>= 0.4'}
+ safe-stable-stringify@2.5.0:
+ resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
+ engines: {node: '>=10'}
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- scheduler@0.25.0:
- resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
+ schema-utils@3.3.0:
+ resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
+ engines: {node: '>= 10.13.0'}
+
+ schema-utils@4.3.0:
+ resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==}
+ engines: {node: '>= 10.13.0'}
+
+ secure-json-parse@2.7.0:
+ resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
+
+ secure-json-parse@3.0.2:
+ resolution: {integrity: sha512-H6nS2o8bWfpFEV6U38sOSjS7bTbdgbCGU9wEM6W14P5H0QOsz94KCusifV44GpHDTu2nqZbuDNhTzu+mjDSw1w==}
+
+ seek-bzip@2.0.0:
+ resolution: {integrity: sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==}
+ hasBin: true
+
+ semver-regex@4.0.5:
+ resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==}
+ engines: {node: '>=12'}
+
+ semver-truncate@3.0.0:
+ resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==}
+ engines: {node: '>=12'}
+
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- semver@7.6.2:
- resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
- engines: {node: '>=10'}
-
semver@7.7.1:
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
engines: {node: '>=10'}
+ hasBin: true
- sentence-case@2.1.1:
- resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==}
+ send@1.1.0:
+ resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==}
+ engines: {node: '>= 18'}
- set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
+ seq-logging@1.1.2:
+ resolution: {integrity: sha512-9n7bCIHiMdBene104oSEa2917OcNBw+uee2v+we4AQxmjqt/aeQkWy1296IvGsogbj5fK6wuDNhVhm/DYmauVA==}
- set-function-name@2.0.2:
- resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
- engines: {node: '>= 0.4'}
+ serialize-javascript@6.0.2:
+ resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
- set-proto@1.0.0:
- resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
- engines: {node: '>= 0.4'}
+ serve-static@2.1.0:
+ resolution: {integrity: sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==}
+ engines: {node: '>= 18'}
- sharp@0.33.5:
- resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ set-blocking@2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+
+ set-cookie-parser@2.7.1:
+ resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ sha.js@2.4.11:
+ resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==}
+ hasBin: true
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
@@ -1757,6 +4160,9 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
+ shimmer@1.2.1:
+ resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
+
side-channel-list@1.0.0:
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
engines: {node: '>= 0.4'}
@@ -1776,65 +4182,95 @@ packages:
signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
- simple-swizzle@0.2.2:
- resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ sisteransi@1.0.5:
+ resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
- smart-buffer@4.2.0:
- resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
- engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+ sonic-boom@4.2.0:
+ resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==}
- snake-case@2.1.0:
- resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==}
-
- socks-proxy-agent@8.0.5:
- resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==}
- engines: {node: '>= 14'}
-
- socks@2.8.4:
- resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==}
- engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ sort-keys-length@1.0.1:
+ resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==}
engines: {node: '>=0.10.0'}
+ sort-keys@1.1.2:
+ resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.13:
+ resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
+ source-map@0.7.4:
+ resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
+ engines: {node: '>= 8'}
+
+ split2@4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
+
+ sprintf-js@1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+
sprintf-js@1.1.3:
resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
+ sql-highlight@6.0.0:
+ resolution: {integrity: sha512-+fLpbAbWkQ+d0JEchJT/NrRRXbYRNbG15gFpANx73EwxQB1PRjj+k/OI0GTU0J63g8ikGkJECQp9z8XEJZvPRw==}
+ engines: {node: '>=14'}
+
+ stack-chain@1.3.7:
+ resolution: {integrity: sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==}
+
+ stack-utils@2.0.6:
+ resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
+ engines: {node: '>=10'}
+
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
+ stoppable@1.1.0:
+ resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==}
+ engines: {node: '>=4', npm: '>=6'}
+
+ stream-shift@1.0.3:
+ resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==}
+
streamsearch@1.1.0:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
+ streamx@2.22.0:
+ resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==}
+
+ string-length@4.0.2:
+ resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ engines: {node: '>=10'}
+
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
- string.prototype.matchall@4.0.12:
- resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
- engines: {node: '>= 0.4'}
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
- string.prototype.repeat@1.0.0:
- resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
-
- string.prototype.trim@1.2.10:
- resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimend@1.0.9:
- resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimstart@1.0.8:
- resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
- engines: {node: '>= 0.4'}
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
@@ -1843,74 +4279,196 @@ packages:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
+ strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+
+ strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
+ strip-bom@4.0.0:
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
+
+ strip-dirs@3.0.0:
+ resolution: {integrity: sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==}
+
strip-final-newline@2.0.0:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
- strip-json-comments@2.0.1:
- resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
- engines: {node: '>=0.10.0'}
-
strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
- styled-jsx@5.1.6:
- resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
- engines: {node: '>= 12.0.0'}
- peerDependencies:
- '@babel/core': '*'
- babel-plugin-macros: '*'
- react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- babel-plugin-macros:
- optional: true
+ strtok3@9.1.1:
+ resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==}
+ engines: {node: '>=16'}
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
+ superagent@9.0.2:
+ resolution: {integrity: sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==}
+ engines: {node: '>=14.18.0'}
+
+ supertest@7.0.0:
+ resolution: {integrity: sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA==}
+ engines: {node: '>=14.18.0'}
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- swap-case@1.1.2:
- resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==}
+ swagger-ui-dist@5.20.1:
+ resolution: {integrity: sha512-qBPCis2w8nP4US7SvUxdJD3OwKcqiWeZmjN2VWhq2v+ESZEXOP/7n4DeiOiiZcGYTKMHAHUUrroHaTsjUWTEGw==}
+
+ symbol-observable@4.0.0:
+ resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==}
+ engines: {node: '>=0.10'}
+
+ synckit@0.9.2:
+ resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+
+ tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+
+ tar-stream@3.1.7:
+ resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
+
+ tar@6.2.1:
+ resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
+ engines: {node: '>=10'}
+
+ tarn@3.0.2:
+ resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==}
+ engines: {node: '>=8.0.0'}
+
+ tedious@18.6.1:
+ resolution: {integrity: sha512-9AvErXXQTd6l7TDd5EmM+nxbOGyhnmdbp/8c3pw+tjaiSXW9usME90ET/CRG1LN1Y9tPMtz/p83z4Q97B4DDpw==}
+ engines: {node: '>=18'}
+
+ terser-webpack-plugin@5.3.14:
+ resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ '@swc/core': '*'
+ esbuild: '*'
+ uglify-js: '*'
+ webpack: ^5.1.0
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ esbuild:
+ optional: true
+ uglify-js:
+ optional: true
+
+ terser@5.39.0:
+ resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ test-exclude@6.0.0:
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
+
+ text-decoder@1.2.3:
+ resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
+
+ thread-stream@3.1.0:
+ resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==}
through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
- tinycolor2@1.6.0:
- resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
-
- tinygradient@1.1.5:
- resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==}
-
- title-case@2.1.1:
- resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==}
-
tmp@0.0.33:
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
engines: {node: '>=0.6.0'}
+ tmpl@1.0.5:
+ resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
+
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
+ toad-cache@3.7.0:
+ resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
+ engines: {node: '>=12'}
+
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ token-types@6.0.0:
+ resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==}
+ engines: {node: '>=14.16'}
+
+ tozod@3.0.0:
+ resolution: {integrity: sha512-R03/moNPEGgWKoTdCsEJuyEoP6NtXyhWg9L9lJhF2XyCR2Ce9XE+yXaswaVmqyBpHsRPC2Pk38mK8Ex7iHaXcg==}
+ peerDependencies:
+ zod: ^3.0.0-alpha.2
+
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ tree-kill@1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+
ts-api-utils@2.0.1:
resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==}
engines: {node: '>=18.12'}
peerDependencies:
typescript: '>=4.8.4'
+ ts-deepmerge@6.2.1:
+ resolution: {integrity: sha512-8CYSLazCyj0DJDpPIxOFzJG46r93uh6EynYjuey+bxcLltBeqZL7DMfaE5ZPzZNFlav7wx+2TDa/mBl8gkTYzw==}
+ engines: {node: '>=14.13.1'}
+
+ ts-jest@29.2.6:
+ resolution: {integrity: sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@babel/core': '>=7.0.0-beta.0 <8'
+ '@jest/transform': ^29.0.0
+ '@jest/types': ^29.0.0
+ babel-jest: ^29.0.0
+ esbuild: '*'
+ jest: ^29.0.0
+ typescript: '>=4.3 <6'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ '@jest/transform':
+ optional: true
+ '@jest/types':
+ optional: true
+ babel-jest:
+ optional: true
+ esbuild:
+ optional: true
+
+ ts-loader@9.5.2:
+ resolution: {integrity: sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ typescript: '*'
+ webpack: ^5.0.0
+
ts-node@10.9.2:
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
+ hasBin: true
peerDependencies:
'@swc/core': '>=1.2.50'
'@swc/wasm': '>=1.2.50'
@@ -1922,8 +4480,13 @@ packages:
'@swc/wasm':
optional: true
- tslib@1.14.1:
- resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ tsconfig-paths-webpack-plugin@4.2.0:
+ resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==}
+ engines: {node: '>=10.13.0'}
+
+ tsconfig-paths@4.2.0:
+ resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
+ engines: {node: '>=6'}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
@@ -1965,25 +4528,104 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
+ type-detect@4.0.8:
+ resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
+ engines: {node: '>=4'}
+
+ type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
type-fest@0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
- typed-array-buffer@1.0.3:
- resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
- engines: {node: '>= 0.4'}
+ type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
- typed-array-byte-length@1.0.3:
- resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
- engines: {node: '>= 0.4'}
+ type-is@2.0.0:
+ resolution: {integrity: sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==}
+ engines: {node: '>= 0.6'}
- typed-array-byte-offset@1.0.4:
- resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
- engines: {node: '>= 0.4'}
+ typedarray@0.0.6:
+ resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
- typed-array-length@1.0.7:
- resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
- engines: {node: '>= 0.4'}
+ typeorm-naming-strategies@4.1.0:
+ resolution: {integrity: sha512-vPekJXzZOTZrdDvTl1YoM+w+sUIfQHG4kZTpbFYoTsufyv9NIBRe4Q+PdzhEAFA2std3D9LZHEb1EjE9zhRpiQ==}
+ peerDependencies:
+ typeorm: ^0.2.0 || ^0.3.0
+
+ typeorm-scoped@1.2.0:
+ resolution: {integrity: sha512-fVZUFIAHCib6Sq/k1wGzwtnFb9uP+g/hLDaoosczJpSNAG2YA2CyPR5J3+UuTz11kvdAfQO0Udk+6rL8xX2/Wg==}
+ peerDependencies:
+ typeorm: <=0.3.20
+
+ typeorm-transactional@0.5.0:
+ resolution: {integrity: sha512-53/CwnXpOIJnWU3oVCNbhHB95FwciKSGbY+m/Hw4e2dBM2c4toiOHwf4pmk83Ne7guznmDgVr/5IUfbp+JTPCg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ reflect-metadata: '>= 0.1.12'
+ typeorm: '>= 0.2.8'
+
+ typeorm@0.3.21:
+ resolution: {integrity: sha512-lh4rUWl1liZGjyPTWpwcK8RNI5x4ekln+/JJOox1wCd7xbucYDOXWD+1cSzTN3L0wbTGxxOtloM5JlxbOxEufA==}
+ engines: {node: '>=16.13.0'}
+ hasBin: true
+ peerDependencies:
+ '@google-cloud/spanner': ^5.18.0
+ '@sap/hana-client': ^2.12.25
+ better-sqlite3: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0
+ hdb-pool: ^0.1.6
+ ioredis: ^5.0.4
+ mongodb: ^5.8.0
+ mssql: ^9.1.1 || ^10.0.1 || ^11.0.1
+ mysql2: ^2.2.5 || ^3.0.1
+ oracledb: ^6.3.0
+ pg: ^8.5.1
+ pg-native: ^3.0.0
+ pg-query-stream: ^4.0.0
+ redis: ^3.1.1 || ^4.0.0
+ reflect-metadata: ^0.1.14 || ^0.2.0
+ sql.js: ^1.4.0
+ sqlite3: ^5.0.3
+ ts-node: ^10.7.0
+ typeorm-aurora-data-api-driver: ^2.0.0
+ peerDependenciesMeta:
+ '@google-cloud/spanner':
+ optional: true
+ '@sap/hana-client':
+ optional: true
+ better-sqlite3:
+ optional: true
+ hdb-pool:
+ optional: true
+ ioredis:
+ optional: true
+ mongodb:
+ optional: true
+ mssql:
+ optional: true
+ mysql2:
+ optional: true
+ oracledb:
+ optional: true
+ pg:
+ optional: true
+ pg-native:
+ optional: true
+ pg-query-stream:
+ optional: true
+ redis:
+ optional: true
+ sql.js:
+ optional: true
+ sqlite3:
+ optional: true
+ ts-node:
+ optional: true
+ typeorm-aurora-data-api-driver:
+ optional: true
typescript-eslint@8.26.0:
resolution: {integrity: sha512-PtVz9nAnuNJuAVeUFvwztjuUgSnJInODAUx47VDwWPXzd5vismPOtPtt83tzNXyOjVQbPRp786D6WFW/M2koIA==}
@@ -1992,17 +4634,25 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
+ typescript@5.7.3:
+ resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
typescript@5.8.2:
resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
engines: {node: '>=14.17'}
- uglify-js@3.19.3:
- resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
- engines: {node: '>=0.8.0'}
+ uid@2.0.2:
+ resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==}
+ engines: {node: '>=8'}
- unbox-primitive@1.1.0:
- resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
- engines: {node: '>= 0.4'}
+ uint8array-extras@1.4.0:
+ resolution: {integrity: sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==}
+ engines: {node: '>=18'}
+
+ unbzip2-stream@1.4.3:
+ resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
undici-types@6.20.0:
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
@@ -2011,14 +4661,15 @@ packages:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
- update-check@1.5.4:
- resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==}
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
- upper-case-first@1.1.2:
- resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==}
-
- upper-case@1.1.3:
- resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==}
+ update-browserslist-db@1.1.3:
+ resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
@@ -2026,50 +4677,128 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
+ uuid@11.1.0:
+ resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
+ hasBin: true
+
+ uuid@8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
+
v8-compile-cache-lib@3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
- validate-npm-package-name@5.0.1:
- resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ v8-to-istanbul@9.3.0:
+ resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
+ engines: {node: '>=10.12.0'}
+
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
+ walker@1.0.8:
+ resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
+
+ watchpack@2.4.2:
+ resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==}
+ engines: {node: '>=10.13.0'}
wcwidth@1.0.1:
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
- which-boxed-primitive@1.1.1:
- resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
- engines: {node: '>= 0.4'}
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
- which-builtin-type@1.2.1:
- resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
- engines: {node: '>= 0.4'}
+ webpack-node-externals@3.0.0:
+ resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==}
+ engines: {node: '>=6'}
- which-collection@1.0.2:
- resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
- engines: {node: '>= 0.4'}
+ webpack-sources@3.2.3:
+ resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+ engines: {node: '>=10.13.0'}
- which-typed-array@1.1.18:
- resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==}
- engines: {node: '>= 0.4'}
+ webpack@5.98.0:
+ resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ peerDependencies:
+ webpack-cli: '*'
+ peerDependenciesMeta:
+ webpack-cli:
+ optional: true
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
+ wide-align@1.1.5:
+ resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
+
+ widest-line@3.1.0:
+ resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==}
+ engines: {node: '>=8'}
+
word-wrap@1.2.5:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- wordwrap@1.0.0:
- resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
-
wrap-ansi@6.2.0:
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
engines: {node: '>=8'}
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ write-file-atomic@4.0.2:
+ resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ xtend@4.0.2:
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+ yaml@2.7.0:
+ resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==}
+ engines: {node: '>= 14'}
+ hasBin: true
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
+ yauzl@3.2.0:
+ resolution: {integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==}
+ engines: {node: '>=12'}
+
yn@3.1.1:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}
@@ -2078,22 +4807,416 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
+ yoctocolors-cjs@2.1.2:
+ resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
+ engines: {node: '>=18'}
+
+ zod@3.24.2:
+ resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==}
+
snapshots:
- '@babel/runtime-corejs3@7.26.9':
+ '@ampproject/remapping@2.3.0':
dependencies:
- core-js-pure: 3.41.0
- regenerator-runtime: 0.14.1
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@anatine/zod-nestjs@2.0.10(@anatine/zod-openapi@2.2.7(openapi3-ts@4.4.0)(zod@3.24.2))(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/swagger@11.0.7(@fastify/static@8.1.1)(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2))(openapi3-ts@4.4.0)(zod@3.24.2)':
+ dependencies:
+ '@anatine/zod-openapi': 2.2.7(openapi3-ts@4.4.0)(zod@3.24.2)
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/swagger': 11.0.7(@fastify/static@8.1.1)(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)
+ openapi3-ts: 4.4.0
+ ts-deepmerge: 6.2.1
+ zod: 3.24.2
+
+ '@anatine/zod-openapi@2.2.7(openapi3-ts@4.4.0)(zod@3.24.2)':
+ dependencies:
+ openapi3-ts: 4.4.0
+ ts-deepmerge: 6.2.1
+ zod: 3.24.2
+
+ '@angular-devkit/core@19.1.8(chokidar@4.0.3)':
+ dependencies:
+ ajv: 8.17.1
+ ajv-formats: 3.0.1(ajv@8.17.1)
+ jsonc-parser: 3.3.1
+ picomatch: 4.0.2
+ rxjs: 7.8.1
+ source-map: 0.7.4
+ optionalDependencies:
+ chokidar: 4.0.3
+
+ '@angular-devkit/core@19.2.0(chokidar@4.0.3)':
+ dependencies:
+ ajv: 8.17.1
+ ajv-formats: 3.0.1(ajv@8.17.1)
+ jsonc-parser: 3.3.1
+ picomatch: 4.0.2
+ rxjs: 7.8.1
+ source-map: 0.7.4
+ optionalDependencies:
+ chokidar: 4.0.3
+
+ '@angular-devkit/schematics-cli@19.1.8(@types/node@22.13.10)(chokidar@4.0.3)':
+ dependencies:
+ '@angular-devkit/core': 19.1.8(chokidar@4.0.3)
+ '@angular-devkit/schematics': 19.1.8(chokidar@4.0.3)
+ '@inquirer/prompts': 7.2.1(@types/node@22.13.10)
+ ansi-colors: 4.1.3
+ symbol-observable: 4.0.0
+ yargs-parser: 21.1.1
+ transitivePeerDependencies:
+ - '@types/node'
+ - chokidar
+
+ '@angular-devkit/schematics@19.1.8(chokidar@4.0.3)':
+ dependencies:
+ '@angular-devkit/core': 19.1.8(chokidar@4.0.3)
+ jsonc-parser: 3.3.1
+ magic-string: 0.30.17
+ ora: 5.4.1
+ rxjs: 7.8.1
+ transitivePeerDependencies:
+ - chokidar
+
+ '@angular-devkit/schematics@19.2.0(chokidar@4.0.3)':
+ dependencies:
+ '@angular-devkit/core': 19.2.0(chokidar@4.0.3)
+ jsonc-parser: 3.3.1
+ magic-string: 0.30.17
+ ora: 5.4.1
+ rxjs: 7.8.1
+ transitivePeerDependencies:
+ - chokidar
+
+ '@autotelic/pino-seq-transport@0.1.0':
+ dependencies:
+ pino-abstract-transport: 0.5.0
+ seq-logging: 1.1.2
+
+ '@azure/abort-controller@2.1.2':
+ dependencies:
+ tslib: 2.8.1
+
+ '@azure/core-auth@1.9.0':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-util': 1.11.0
+ tslib: 2.8.1
+
+ '@azure/core-client@1.9.3':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.9.0
+ '@azure/core-rest-pipeline': 1.19.1
+ '@azure/core-tracing': 1.2.0
+ '@azure/core-util': 1.11.0
+ '@azure/logger': 1.1.4
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/core-http-compat@2.2.0':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-client': 1.9.3
+ '@azure/core-rest-pipeline': 1.19.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/core-lro@2.7.2':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-util': 1.11.0
+ '@azure/logger': 1.1.4
+ tslib: 2.8.1
+
+ '@azure/core-paging@1.6.2':
+ dependencies:
+ tslib: 2.8.1
+
+ '@azure/core-rest-pipeline@1.19.1':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.9.0
+ '@azure/core-tracing': 1.2.0
+ '@azure/core-util': 1.11.0
+ '@azure/logger': 1.1.4
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/core-tracing@1.2.0':
+ dependencies:
+ tslib: 2.8.1
+
+ '@azure/core-util@1.11.0':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ tslib: 2.8.1
+
+ '@azure/identity@4.8.0':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.9.0
+ '@azure/core-client': 1.9.3
+ '@azure/core-rest-pipeline': 1.19.1
+ '@azure/core-tracing': 1.2.0
+ '@azure/core-util': 1.11.0
+ '@azure/logger': 1.1.4
+ '@azure/msal-browser': 4.7.0
+ '@azure/msal-node': 3.3.0
+ events: 3.3.0
+ jws: 4.0.0
+ open: 10.1.0
+ stoppable: 1.1.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/keyvault-common@2.0.0':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.9.0
+ '@azure/core-client': 1.9.3
+ '@azure/core-rest-pipeline': 1.19.1
+ '@azure/core-tracing': 1.2.0
+ '@azure/core-util': 1.11.0
+ '@azure/logger': 1.1.4
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/keyvault-keys@4.9.0':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.9.0
+ '@azure/core-client': 1.9.3
+ '@azure/core-http-compat': 2.2.0
+ '@azure/core-lro': 2.7.2
+ '@azure/core-paging': 1.6.2
+ '@azure/core-rest-pipeline': 1.19.1
+ '@azure/core-tracing': 1.2.0
+ '@azure/core-util': 1.11.0
+ '@azure/keyvault-common': 2.0.0
+ '@azure/logger': 1.1.4
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/logger@1.1.4':
+ dependencies:
+ tslib: 2.8.1
+
+ '@azure/msal-browser@4.7.0':
+ dependencies:
+ '@azure/msal-common': 15.2.1
+
+ '@azure/msal-common@15.2.1': {}
+
+ '@azure/msal-node@3.3.0':
+ dependencies:
+ '@azure/msal-common': 15.2.1
+ jsonwebtoken: 9.0.2
+ uuid: 8.3.2
+
+ '@babel/code-frame@7.26.2':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.25.9
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.26.8': {}
+
+ '@babel/core@7.26.10':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.10
+ '@babel/helper-compilation-targets': 7.26.5
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10)
+ '@babel/helpers': 7.26.10
+ '@babel/parser': 7.26.10
+ '@babel/template': 7.26.9
+ '@babel/traverse': 7.26.10
+ '@babel/types': 7.26.10
+ convert-source-map: 2.0.0
+ debug: 4.4.0
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.26.10':
+ dependencies:
+ '@babel/parser': 7.26.10
+ '@babel/types': 7.26.10
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 3.1.0
+
+ '@babel/helper-compilation-targets@7.26.5':
+ dependencies:
+ '@babel/compat-data': 7.26.8
+ '@babel/helper-validator-option': 7.25.9
+ browserslist: 4.24.4
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-module-imports@7.25.9':
+ dependencies:
+ '@babel/traverse': 7.26.10
+ '@babel/types': 7.26.10
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-module-imports': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+ '@babel/traverse': 7.26.10
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-plugin-utils@7.26.5': {}
+
+ '@babel/helper-string-parser@7.25.9': {}
+
+ '@babel/helper-validator-identifier@7.25.9': {}
+
+ '@babel/helper-validator-option@7.25.9': {}
+
+ '@babel/helpers@7.26.10':
+ dependencies:
+ '@babel/template': 7.26.9
+ '@babel/types': 7.26.10
+
+ '@babel/parser@7.26.10':
+ dependencies:
+ '@babel/types': 7.26.10
+
+ '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/helper-plugin-utils': 7.26.5
+
+ '@babel/template@7.26.9':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/parser': 7.26.10
+ '@babel/types': 7.26.10
+
+ '@babel/traverse@7.26.10':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.10
+ '@babel/parser': 7.26.10
+ '@babel/template': 7.26.9
+ '@babel/types': 7.26.10
+ debug: 4.4.0
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.26.10':
+ dependencies:
+ '@babel/helper-string-parser': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+
+ '@bcoe/v8-coverage@0.2.3': {}
+
+ '@colors/colors@1.5.0':
+ optional: true
'@cspotcode/source-map-support@0.8.1':
dependencies:
'@jridgewell/trace-mapping': 0.3.9
- '@emnapi/runtime@1.3.1':
- dependencies:
- tslib: 2.8.1
- optional: true
-
'@eslint-community/eslint-utils@4.4.1(eslint@9.22.0)':
dependencies:
eslint: 9.22.0
@@ -2138,6 +5261,73 @@ snapshots:
'@eslint/core': 0.12.0
levn: 0.4.1
+ '@fastify/accept-negotiator@2.0.1': {}
+
+ '@fastify/ajv-compiler@4.0.2':
+ dependencies:
+ ajv: 8.17.1
+ ajv-formats: 3.0.1(ajv@8.17.1)
+ fast-uri: 3.0.6
+
+ '@fastify/cors@11.0.0':
+ dependencies:
+ fastify-plugin: 5.0.1
+ mnemonist: 0.40.0
+
+ '@fastify/error@4.1.0': {}
+
+ '@fastify/fast-json-stringify-compiler@5.0.2':
+ dependencies:
+ fast-json-stringify: 6.0.1
+
+ '@fastify/formbody@8.0.2':
+ dependencies:
+ fast-querystring: 1.1.2
+ fastify-plugin: 5.0.1
+
+ '@fastify/forwarded@3.0.0': {}
+
+ '@fastify/merge-json-schemas@0.2.1':
+ dependencies:
+ dequal: 2.0.3
+
+ '@fastify/middie@9.0.3':
+ dependencies:
+ '@fastify/error': 4.1.0
+ fastify-plugin: 5.0.1
+ path-to-regexp: 8.2.0
+ reusify: 1.1.0
+
+ '@fastify/proxy-addr@5.0.0':
+ dependencies:
+ '@fastify/forwarded': 3.0.0
+ ipaddr.js: 2.2.0
+
+ '@fastify/send@3.3.1':
+ dependencies:
+ '@lukeed/ms': 2.0.2
+ escape-html: 1.0.3
+ fast-decode-uri-component: 1.0.1
+ http-errors: 2.0.0
+ mime: 3.0.0
+
+ '@fastify/send@4.0.0':
+ dependencies:
+ '@lukeed/ms': 2.0.2
+ escape-html: 1.0.3
+ fast-decode-uri-component: 1.0.1
+ http-errors: 2.0.0
+ mime: 3.0.0
+
+ '@fastify/static@8.1.1':
+ dependencies:
+ '@fastify/accept-negotiator': 2.0.1
+ '@fastify/send': 3.3.1
+ content-disposition: 0.5.4
+ fastify-plugin: 5.0.1
+ fastq: 1.19.1
+ glob: 11.0.1
+
'@humanfs/core@0.19.1': {}
'@humanfs/node@0.16.6':
@@ -2151,120 +5341,618 @@ snapshots:
'@humanwhocodes/retry@0.4.2': {}
- '@img/sharp-darwin-arm64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.0.4
- optional: true
-
- '@img/sharp-darwin-x64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.0.4
- optional: true
-
- '@img/sharp-libvips-darwin-arm64@1.0.4':
- optional: true
-
- '@img/sharp-libvips-darwin-x64@1.0.4':
- optional: true
-
- '@img/sharp-libvips-linux-arm64@1.0.4':
- optional: true
-
- '@img/sharp-libvips-linux-arm@1.0.5':
- optional: true
-
- '@img/sharp-libvips-linux-s390x@1.0.4':
- optional: true
-
- '@img/sharp-libvips-linux-x64@1.0.4':
- optional: true
-
- '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
- optional: true
-
- '@img/sharp-libvips-linuxmusl-x64@1.0.4':
- optional: true
-
- '@img/sharp-linux-arm64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.0.4
- optional: true
-
- '@img/sharp-linux-arm@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.0.5
- optional: true
-
- '@img/sharp-linux-s390x@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.0.4
- optional: true
-
- '@img/sharp-linux-x64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.0.4
- optional: true
-
- '@img/sharp-linuxmusl-arm64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
- optional: true
-
- '@img/sharp-linuxmusl-x64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.0.4
- optional: true
-
- '@img/sharp-wasm32@0.33.5':
+ '@inquirer/checkbox@4.1.4(@types/node@22.13.10)':
dependencies:
- '@emnapi/runtime': 1.3.1
- optional: true
+ '@inquirer/core': 10.1.9(@types/node@22.13.10)
+ '@inquirer/figures': 1.0.11
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ ansi-escapes: 4.3.2
+ yoctocolors-cjs: 2.1.2
+ optionalDependencies:
+ '@types/node': 22.13.10
- '@img/sharp-win32-ia32@0.33.5':
- optional: true
+ '@inquirer/confirm@5.1.8(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/core': 10.1.9(@types/node@22.13.10)
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ optionalDependencies:
+ '@types/node': 22.13.10
- '@img/sharp-win32-x64@0.33.5':
- optional: true
+ '@inquirer/core@10.1.9(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/figures': 1.0.11
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ ansi-escapes: 4.3.2
+ cli-width: 4.1.0
+ mute-stream: 2.0.0
+ signal-exit: 4.1.0
+ wrap-ansi: 6.2.0
+ yoctocolors-cjs: 2.1.2
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@inquirer/editor@4.2.9(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/core': 10.1.9(@types/node@22.13.10)
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ external-editor: 3.1.0
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@inquirer/expand@4.0.11(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/core': 10.1.9(@types/node@22.13.10)
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ yoctocolors-cjs: 2.1.2
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@inquirer/figures@1.0.11': {}
+
+ '@inquirer/input@4.1.8(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/core': 10.1.9(@types/node@22.13.10)
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@inquirer/number@3.0.11(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/core': 10.1.9(@types/node@22.13.10)
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@inquirer/password@4.0.11(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/core': 10.1.9(@types/node@22.13.10)
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ ansi-escapes: 4.3.2
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@inquirer/prompts@7.2.1(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/checkbox': 4.1.4(@types/node@22.13.10)
+ '@inquirer/confirm': 5.1.8(@types/node@22.13.10)
+ '@inquirer/editor': 4.2.9(@types/node@22.13.10)
+ '@inquirer/expand': 4.0.11(@types/node@22.13.10)
+ '@inquirer/input': 4.1.8(@types/node@22.13.10)
+ '@inquirer/number': 3.0.11(@types/node@22.13.10)
+ '@inquirer/password': 4.0.11(@types/node@22.13.10)
+ '@inquirer/rawlist': 4.0.11(@types/node@22.13.10)
+ '@inquirer/search': 3.0.11(@types/node@22.13.10)
+ '@inquirer/select': 4.1.0(@types/node@22.13.10)
+ '@types/node': 22.13.10
+
+ '@inquirer/prompts@7.3.2(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/checkbox': 4.1.4(@types/node@22.13.10)
+ '@inquirer/confirm': 5.1.8(@types/node@22.13.10)
+ '@inquirer/editor': 4.2.9(@types/node@22.13.10)
+ '@inquirer/expand': 4.0.11(@types/node@22.13.10)
+ '@inquirer/input': 4.1.8(@types/node@22.13.10)
+ '@inquirer/number': 3.0.11(@types/node@22.13.10)
+ '@inquirer/password': 4.0.11(@types/node@22.13.10)
+ '@inquirer/rawlist': 4.0.11(@types/node@22.13.10)
+ '@inquirer/search': 3.0.11(@types/node@22.13.10)
+ '@inquirer/select': 4.1.0(@types/node@22.13.10)
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@inquirer/rawlist@4.0.11(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/core': 10.1.9(@types/node@22.13.10)
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ yoctocolors-cjs: 2.1.2
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@inquirer/search@3.0.11(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/core': 10.1.9(@types/node@22.13.10)
+ '@inquirer/figures': 1.0.11
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ yoctocolors-cjs: 2.1.2
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@inquirer/select@4.1.0(@types/node@22.13.10)':
+ dependencies:
+ '@inquirer/core': 10.1.9(@types/node@22.13.10)
+ '@inquirer/figures': 1.0.11
+ '@inquirer/type': 3.0.5(@types/node@22.13.10)
+ ansi-escapes: 4.3.2
+ yoctocolors-cjs: 2.1.2
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@inquirer/type@3.0.5(@types/node@22.13.10)':
+ optionalDependencies:
+ '@types/node': 22.13.10
+
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ '@istanbuljs/load-nyc-config@1.1.0':
+ dependencies:
+ camelcase: 5.3.1
+ find-up: 4.1.0
+ get-package-type: 0.1.0
+ js-yaml: 3.14.1
+ resolve-from: 5.0.0
+
+ '@istanbuljs/schema@0.1.3': {}
+
+ '@jest/console@29.7.0':
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 22.13.10
+ chalk: 4.1.2
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+
+ '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))':
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/reporters': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.13.10
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-changed-files: 29.7.0
+ jest-config: 29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-resolve-dependencies: 29.7.0
+ jest-runner: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ jest-watcher: 29.7.0
+ micromatch: 4.0.8
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ '@jest/environment@29.7.0':
+ dependencies:
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.13.10
+ jest-mock: 29.7.0
+
+ '@jest/expect-utils@29.7.0':
+ dependencies:
+ jest-get-type: 29.6.3
+
+ '@jest/expect@29.7.0':
+ dependencies:
+ expect: 29.7.0
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/fake-timers@29.7.0':
+ dependencies:
+ '@jest/types': 29.6.3
+ '@sinonjs/fake-timers': 10.3.0
+ '@types/node': 22.13.10
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+
+ '@jest/globals@29.7.0':
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/types': 29.6.3
+ jest-mock: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/reporters@29.7.0':
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@jest/console': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.25
+ '@types/node': 22.13.10
+ chalk: 4.1.2
+ collect-v8-coverage: 1.0.2
+ exit: 0.1.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ istanbul-lib-coverage: 3.2.2
+ istanbul-lib-instrument: 6.0.3
+ istanbul-lib-report: 3.0.1
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.1.7
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ slash: 3.0.0
+ string-length: 4.0.2
+ strip-ansi: 6.0.1
+ v8-to-istanbul: 9.3.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/schemas@29.6.3':
+ dependencies:
+ '@sinclair/typebox': 0.27.8
+
+ '@jest/source-map@29.6.3':
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ callsites: 3.1.0
+ graceful-fs: 4.2.11
+
+ '@jest/test-result@29.7.0':
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ collect-v8-coverage: 1.0.2
+
+ '@jest/test-sequencer@29.7.0':
+ dependencies:
+ '@jest/test-result': 29.7.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ slash: 3.0.0
+
+ '@jest/transform@29.7.0':
+ dependencies:
+ '@babel/core': 7.26.10
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.25
+ babel-plugin-istanbul: 6.1.1
+ chalk: 4.1.2
+ convert-source-map: 2.0.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ micromatch: 4.0.8
+ pirates: 4.0.6
+ slash: 3.0.0
+ write-file-atomic: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/types@29.6.3':
+ dependencies:
+ '@jest/schemas': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 22.13.10
+ '@types/yargs': 17.0.33
+ chalk: 4.1.2
+
+ '@jridgewell/gen-mapping@0.3.8':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
'@jridgewell/resolve-uri@3.1.2': {}
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/source-map@0.3.6':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/trace-mapping': 0.3.25
+
'@jridgewell/sourcemap-codec@1.5.0': {}
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
'@jridgewell/trace-mapping@0.3.9':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
- '@next/env@15.2.1': {}
+ '@js-joda/core@5.6.4': {}
- '@next/eslint-plugin-next@15.2.1':
+ '@keyv/redis@4.3.2':
dependencies:
- fast-glob: 3.3.1
+ cluster-key-slot: 1.1.2
+ keyv: 5.3.2
+ redis: 4.7.0
- '@next/swc-darwin-arm64@15.2.1':
+ '@keyv/serialize@1.0.3':
+ dependencies:
+ buffer: 6.0.3
+
+ '@lukeed/csprng@1.1.0': {}
+
+ '@lukeed/ms@2.0.2': {}
+
+ '@mapbox/node-pre-gyp@1.0.11':
+ dependencies:
+ detect-libc: 2.0.3
+ https-proxy-agent: 5.0.1
+ make-dir: 3.1.0
+ node-fetch: 2.7.0
+ nopt: 5.0.0
+ npmlog: 5.0.1
+ rimraf: 3.0.2
+ semver: 7.7.1
+ tar: 6.2.1
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ '@microsoft/tsdoc@0.15.1': {}
+
+ '@napi-rs/nice-android-arm-eabi@1.0.1':
optional: true
- '@next/swc-darwin-x64@15.2.1':
+ '@napi-rs/nice-android-arm64@1.0.1':
optional: true
- '@next/swc-linux-arm64-gnu@15.2.1':
+ '@napi-rs/nice-darwin-arm64@1.0.1':
optional: true
- '@next/swc-linux-arm64-musl@15.2.1':
+ '@napi-rs/nice-darwin-x64@1.0.1':
optional: true
- '@next/swc-linux-x64-gnu@15.2.1':
+ '@napi-rs/nice-freebsd-x64@1.0.1':
optional: true
- '@next/swc-linux-x64-musl@15.2.1':
+ '@napi-rs/nice-linux-arm-gnueabihf@1.0.1':
optional: true
- '@next/swc-win32-arm64-msvc@15.2.1':
+ '@napi-rs/nice-linux-arm64-gnu@1.0.1':
optional: true
- '@next/swc-win32-x64-msvc@15.2.1':
+ '@napi-rs/nice-linux-arm64-musl@1.0.1':
optional: true
+ '@napi-rs/nice-linux-ppc64-gnu@1.0.1':
+ optional: true
+
+ '@napi-rs/nice-linux-riscv64-gnu@1.0.1':
+ optional: true
+
+ '@napi-rs/nice-linux-s390x-gnu@1.0.1':
+ optional: true
+
+ '@napi-rs/nice-linux-x64-gnu@1.0.1':
+ optional: true
+
+ '@napi-rs/nice-linux-x64-musl@1.0.1':
+ optional: true
+
+ '@napi-rs/nice-win32-arm64-msvc@1.0.1':
+ optional: true
+
+ '@napi-rs/nice-win32-ia32-msvc@1.0.1':
+ optional: true
+
+ '@napi-rs/nice-win32-x64-msvc@1.0.1':
+ optional: true
+
+ '@napi-rs/nice@1.0.1':
+ optionalDependencies:
+ '@napi-rs/nice-android-arm-eabi': 1.0.1
+ '@napi-rs/nice-android-arm64': 1.0.1
+ '@napi-rs/nice-darwin-arm64': 1.0.1
+ '@napi-rs/nice-darwin-x64': 1.0.1
+ '@napi-rs/nice-freebsd-x64': 1.0.1
+ '@napi-rs/nice-linux-arm-gnueabihf': 1.0.1
+ '@napi-rs/nice-linux-arm64-gnu': 1.0.1
+ '@napi-rs/nice-linux-arm64-musl': 1.0.1
+ '@napi-rs/nice-linux-ppc64-gnu': 1.0.1
+ '@napi-rs/nice-linux-riscv64-gnu': 1.0.1
+ '@napi-rs/nice-linux-s390x-gnu': 1.0.1
+ '@napi-rs/nice-linux-x64-gnu': 1.0.1
+ '@napi-rs/nice-linux-x64-musl': 1.0.1
+ '@napi-rs/nice-win32-arm64-msvc': 1.0.1
+ '@napi-rs/nice-win32-ia32-msvc': 1.0.1
+ '@napi-rs/nice-win32-x64-msvc': 1.0.1
+ optional: true
+
+ '@nestjs/cli@11.0.5(@swc/cli@0.6.0(@swc/core@1.11.11)(chokidar@4.0.3))(@swc/core@1.11.11)(@types/node@22.13.10)':
+ dependencies:
+ '@angular-devkit/core': 19.1.8(chokidar@4.0.3)
+ '@angular-devkit/schematics': 19.1.8(chokidar@4.0.3)
+ '@angular-devkit/schematics-cli': 19.1.8(@types/node@22.13.10)(chokidar@4.0.3)
+ '@inquirer/prompts': 7.3.2(@types/node@22.13.10)
+ '@nestjs/schematics': 11.0.2(chokidar@4.0.3)(typescript@5.7.3)
+ ansis: 3.16.0
+ chokidar: 4.0.3
+ cli-table3: 0.6.5
+ commander: 4.1.1
+ fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.11.11))
+ glob: 11.0.1
+ node-emoji: 1.11.0
+ ora: 5.4.1
+ tree-kill: 1.2.2
+ tsconfig-paths: 4.2.0
+ tsconfig-paths-webpack-plugin: 4.2.0
+ typescript: 5.7.3
+ webpack: 5.98.0(@swc/core@1.11.11)
+ webpack-node-externals: 3.0.0
+ optionalDependencies:
+ '@swc/cli': 0.6.0(@swc/core@1.11.11)(chokidar@4.0.3)
+ '@swc/core': 1.11.11
+ transitivePeerDependencies:
+ - '@types/node'
+ - esbuild
+ - uglify-js
+ - webpack-cli
+
+ '@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)':
+ dependencies:
+ iterare: 1.2.1
+ reflect-metadata: 0.2.2
+ rxjs: 7.8.2
+ tslib: 2.8.1
+ uid: 2.0.2
+
+ '@nestjs/config@4.0.1(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2)':
+ dependencies:
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ dotenv: 16.4.7
+ dotenv-expand: 12.0.1
+ lodash: 4.17.21
+ rxjs: 7.8.2
+
+ '@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
+ dependencies:
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nuxt/opencollective': 0.4.1
+ fast-safe-stringify: 2.1.1
+ iterare: 1.2.1
+ path-to-regexp: 8.2.0
+ reflect-metadata: 0.2.2
+ rxjs: 7.8.2
+ tslib: 2.8.1
+ uid: 2.0.2
+ optionalDependencies:
+ '@nestjs/platform-express': 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12)
+
+ '@nestjs/jwt@11.0.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))':
+ dependencies:
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@types/jsonwebtoken': 9.0.7
+ jsonwebtoken: 9.0.2
+
+ '@nestjs/mapped-types@2.1.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)':
+ dependencies:
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ reflect-metadata: 0.2.2
+
+ '@nestjs/passport@11.0.5(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0)':
+ dependencies:
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ passport: 0.7.0
+
+ '@nestjs/platform-express@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12)':
+ dependencies:
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ cors: 2.8.5
+ express: 5.0.1
+ multer: 1.4.5-lts.1
+ path-to-regexp: 8.2.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@nestjs/platform-fastify@11.0.12(@fastify/static@8.1.1)(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))':
+ dependencies:
+ '@fastify/cors': 11.0.0
+ '@fastify/formbody': 8.0.2
+ '@fastify/middie': 9.0.3
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ fast-querystring: 1.1.2
+ fastify: 5.2.1
+ light-my-request: 6.6.0
+ path-to-regexp: 8.2.0
+ tslib: 2.8.1
+ optionalDependencies:
+ '@fastify/static': 8.1.1
+
+ '@nestjs/schedule@5.0.1(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))':
+ dependencies:
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ cron: 3.5.0
+
+ '@nestjs/schematics@11.0.2(chokidar@4.0.3)(typescript@5.7.3)':
+ dependencies:
+ '@angular-devkit/core': 19.2.0(chokidar@4.0.3)
+ '@angular-devkit/schematics': 19.2.0(chokidar@4.0.3)
+ comment-json: 4.2.5
+ jsonc-parser: 3.3.1
+ pluralize: 8.0.0
+ typescript: 5.7.3
+ transitivePeerDependencies:
+ - chokidar
+
+ '@nestjs/schematics@11.0.2(chokidar@4.0.3)(typescript@5.8.2)':
+ dependencies:
+ '@angular-devkit/core': 19.2.0(chokidar@4.0.3)
+ '@angular-devkit/schematics': 19.2.0(chokidar@4.0.3)
+ comment-json: 4.2.5
+ jsonc-parser: 3.3.1
+ pluralize: 8.0.0
+ typescript: 5.8.2
+ transitivePeerDependencies:
+ - chokidar
+
+ '@nestjs/swagger@11.0.7(@fastify/static@8.1.1)(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)':
+ dependencies:
+ '@microsoft/tsdoc': 0.15.1
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/mapped-types': 2.1.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)
+ js-yaml: 4.1.0
+ lodash: 4.17.21
+ path-to-regexp: 8.2.0
+ reflect-metadata: 0.2.2
+ swagger-ui-dist: 5.20.1
+ optionalDependencies:
+ '@fastify/static': 8.1.1
+
+ '@nestjs/terminus@11.0.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/typeorm@11.0.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))':
+ dependencies:
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ boxen: 5.1.2
+ check-disk-space: 3.4.0
+ reflect-metadata: 0.2.2
+ rxjs: 7.8.2
+ optionalDependencies:
+ '@nestjs/typeorm': 11.0.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))
+ typeorm: 0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+
+ '@nestjs/testing@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12))':
+ dependencies:
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ tslib: 2.8.1
+ optionalDependencies:
+ '@nestjs/platform-express': 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12)
+
+ '@nestjs/typeorm@11.0.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))':
+ dependencies:
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ reflect-metadata: 0.2.2
+ rxjs: 7.8.2
+ typeorm: 0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -2277,13 +5965,572 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.19.1
+ '@nuxt/opencollective@0.4.1':
+ dependencies:
+ consola: 3.4.2
+
+ '@phc/format@1.0.0': {}
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@pkgr/core@0.1.1': {}
+
+ '@redis/bloom@1.2.0(@redis/client@1.6.0)':
+ dependencies:
+ '@redis/client': 1.6.0
+
+ '@redis/client@1.6.0':
+ dependencies:
+ cluster-key-slot: 1.1.2
+ generic-pool: 3.9.0
+ yallist: 4.0.0
+
+ '@redis/graph@1.1.1(@redis/client@1.6.0)':
+ dependencies:
+ '@redis/client': 1.6.0
+
+ '@redis/json@1.0.7(@redis/client@1.6.0)':
+ dependencies:
+ '@redis/client': 1.6.0
+
+ '@redis/search@1.2.0(@redis/client@1.6.0)':
+ dependencies:
+ '@redis/client': 1.6.0
+
+ '@redis/time-series@1.1.0(@redis/client@1.6.0)':
+ dependencies:
+ '@redis/client': 1.6.0
+
+ '@scarf/scarf@1.4.0': {}
+
+ '@sec-ant/readable-stream@0.4.1': {}
+
+ '@sinclair/typebox@0.27.8': {}
+
+ '@sindresorhus/is@5.6.0': {}
+
+ '@sinonjs/commons@3.0.1':
+ dependencies:
+ type-detect: 4.0.8
+
+ '@sinonjs/fake-timers@10.3.0':
+ dependencies:
+ '@sinonjs/commons': 3.0.1
+
+ '@sqltools/formatter@1.2.5': {}
+
+ '@stdlib/array@0.3.3':
+ dependencies:
+ '@stdlib/assert': 0.3.3
+ '@stdlib/blas': 0.3.3
+ '@stdlib/boolean': 0.3.3
+ '@stdlib/buffer': 0.3.3
+ '@stdlib/complex': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/iter': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/ndarray': 0.3.3
+ '@stdlib/object': 0.3.3
+ '@stdlib/proxy': 0.3.3
+ '@stdlib/slice': 0.3.3
+ '@stdlib/strided': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/symbol': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/assert@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/boolean': 0.3.3
+ '@stdlib/cli': 0.3.3
+ '@stdlib/complex': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/fs': 0.3.3
+ '@stdlib/function': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/ndarray': 0.3.3
+ '@stdlib/number': 0.3.3
+ '@stdlib/object': 0.3.3
+ '@stdlib/os': 0.3.3
+ '@stdlib/process': 0.3.3
+ '@stdlib/regexp': 0.3.3
+ '@stdlib/slice': 0.3.3
+ '@stdlib/streams': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/symbol': 0.3.3
+ '@stdlib/time': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ '@stdlib/wasm': 0.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/bigint@0.3.3':
+ dependencies:
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/blas@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/complex': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/napi': 0.3.3
+ '@stdlib/ndarray': 0.3.3
+ '@stdlib/number': 0.3.3
+ '@stdlib/strided': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/boolean@0.3.3':
+ dependencies:
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/buffer@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/process': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/cli@0.3.3':
+ dependencies:
+ '@stdlib/string': 0.3.3
+ '@stdlib/utils': 0.3.3
+ minimist: 1.2.8
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/complex@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/number': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/constants@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/complex': 0.3.3
+ '@stdlib/number': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/fs@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/cli': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/object': 0.3.3
+ '@stdlib/process': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/utils': 0.3.3
+ debug: 2.6.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/function@0.3.3':
+ dependencies:
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/iter@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/symbol': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/math@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/complex': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/function': 0.3.3
+ '@stdlib/napi': 0.3.3
+ '@stdlib/ndarray': 0.3.3
+ '@stdlib/number': 0.3.3
+ '@stdlib/strided': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/symbol': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ debug: 2.6.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/napi@0.3.3':
+ dependencies:
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/ndarray@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/bigint': 0.3.3
+ '@stdlib/blas': 0.3.3
+ '@stdlib/boolean': 0.3.3
+ '@stdlib/buffer': 0.3.3
+ '@stdlib/complex': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/number': 0.3.3
+ '@stdlib/object': 0.3.3
+ '@stdlib/proxy': 0.3.3
+ '@stdlib/slice': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/symbol': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/nlp@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/random': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/number@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/napi': 0.3.3
+ '@stdlib/os': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/object@0.3.3':
+ dependencies:
+ '@stdlib/assert': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/os@0.3.3':
+ dependencies:
+ '@stdlib/assert': 0.3.3
+ '@stdlib/cli': 0.3.3
+ '@stdlib/fs': 0.3.3
+ '@stdlib/process': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/process@0.3.3':
+ dependencies:
+ '@stdlib/assert': 0.3.3
+ '@stdlib/buffer': 0.3.3
+ '@stdlib/cli': 0.3.3
+ '@stdlib/fs': 0.3.3
+ '@stdlib/streams': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/proxy@0.3.3':
+ dependencies:
+ '@stdlib/assert': 0.3.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/random@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/blas': 0.3.3
+ '@stdlib/buffer': 0.3.3
+ '@stdlib/cli': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/fs': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/object': 0.3.3
+ '@stdlib/process': 0.3.3
+ '@stdlib/stats': 0.3.3
+ '@stdlib/streams': 0.3.3
+ '@stdlib/strided': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/symbol': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ debug: 2.6.9
+ readable-stream: 2.3.8
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/regexp@0.3.3':
+ dependencies:
+ '@stdlib/assert': 0.3.3
+ '@stdlib/function': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/slice@0.3.3':
+ dependencies:
+ '@stdlib/assert': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/stats@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/blas': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/ndarray': 0.3.3
+ '@stdlib/number': 0.3.3
+ '@stdlib/random': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/symbol': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/streams@0.3.3':
+ dependencies:
+ '@stdlib/assert': 0.3.3
+ '@stdlib/buffer': 0.3.3
+ '@stdlib/cli': 0.3.3
+ '@stdlib/fs': 0.3.3
+ '@stdlib/object': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ debug: 2.6.9
+ readable-stream: 2.3.8
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/strided@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/complex': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/ndarray': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/string@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/buffer': 0.3.3
+ '@stdlib/cli': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/fs': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/nlp': 0.3.3
+ '@stdlib/number': 0.3.3
+ '@stdlib/process': 0.3.3
+ '@stdlib/random': 0.3.3
+ '@stdlib/regexp': 0.3.3
+ '@stdlib/streams': 0.3.3
+ '@stdlib/symbol': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/symbol@0.3.3':
+ dependencies:
+ '@stdlib/assert': 0.3.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/time@0.3.3':
+ dependencies:
+ '@stdlib/assert': 0.3.3
+ '@stdlib/cli': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/fs': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/process': 0.3.3
+ '@stdlib/regexp': 0.3.3
+ '@stdlib/streams': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/types@0.4.3': {}
+
+ '@stdlib/utils@0.3.3':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/blas': 0.3.3
+ '@stdlib/boolean': 0.3.3
+ '@stdlib/buffer': 0.3.3
+ '@stdlib/cli': 0.3.3
+ '@stdlib/constants': 0.3.3
+ '@stdlib/fs': 0.3.3
+ '@stdlib/function': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/ndarray': 0.3.3
+ '@stdlib/object': 0.3.3
+ '@stdlib/os': 0.3.3
+ '@stdlib/process': 0.3.3
+ '@stdlib/random': 0.3.3
+ '@stdlib/regexp': 0.3.3
+ '@stdlib/streams': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/symbol': 0.3.3
+ '@stdlib/time': 0.3.3
+ '@stdlib/types': 0.4.3
+ debug: 2.6.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@stdlib/wasm@0.1.1':
+ dependencies:
+ '@stdlib/array': 0.3.3
+ '@stdlib/assert': 0.3.3
+ '@stdlib/math': 0.3.3
+ '@stdlib/ndarray': 0.3.3
+ '@stdlib/object': 0.3.3
+ '@stdlib/strided': 0.3.3
+ '@stdlib/string': 0.3.3
+ '@stdlib/types': 0.4.3
+ '@stdlib/utils': 0.3.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@swc/cli@0.6.0(@swc/core@1.11.11)(chokidar@4.0.3)':
+ dependencies:
+ '@swc/core': 1.11.11
+ '@swc/counter': 0.1.3
+ '@xhmikosr/bin-wrapper': 13.0.5
+ commander: 8.3.0
+ fast-glob: 3.3.3
+ minimatch: 9.0.5
+ piscina: 4.9.2
+ semver: 7.7.1
+ slash: 3.0.0
+ source-map: 0.7.4
+ optionalDependencies:
+ chokidar: 4.0.3
+
+ '@swc/core-darwin-arm64@1.11.11':
+ optional: true
+
+ '@swc/core-darwin-x64@1.11.11':
+ optional: true
+
+ '@swc/core-linux-arm-gnueabihf@1.11.11':
+ optional: true
+
+ '@swc/core-linux-arm64-gnu@1.11.11':
+ optional: true
+
+ '@swc/core-linux-arm64-musl@1.11.11':
+ optional: true
+
+ '@swc/core-linux-x64-gnu@1.11.11':
+ optional: true
+
+ '@swc/core-linux-x64-musl@1.11.11':
+ optional: true
+
+ '@swc/core-win32-arm64-msvc@1.11.11':
+ optional: true
+
+ '@swc/core-win32-ia32-msvc@1.11.11':
+ optional: true
+
+ '@swc/core-win32-x64-msvc@1.11.11':
+ optional: true
+
+ '@swc/core@1.11.11':
+ dependencies:
+ '@swc/counter': 0.1.3
+ '@swc/types': 0.1.19
+ optionalDependencies:
+ '@swc/core-darwin-arm64': 1.11.11
+ '@swc/core-darwin-x64': 1.11.11
+ '@swc/core-linux-arm-gnueabihf': 1.11.11
+ '@swc/core-linux-arm64-gnu': 1.11.11
+ '@swc/core-linux-arm64-musl': 1.11.11
+ '@swc/core-linux-x64-gnu': 1.11.11
+ '@swc/core-linux-x64-musl': 1.11.11
+ '@swc/core-win32-arm64-msvc': 1.11.11
+ '@swc/core-win32-ia32-msvc': 1.11.11
+ '@swc/core-win32-x64-msvc': 1.11.11
+
'@swc/counter@0.1.3': {}
- '@swc/helpers@0.5.15':
+ '@swc/types@0.1.19':
dependencies:
- tslib: 2.8.1
+ '@swc/counter': 0.1.3
- '@tootallnate/quickjs-emscripten@0.23.0': {}
+ '@szmarczak/http-timer@5.0.1':
+ dependencies:
+ defer-to-connect: 2.0.1
+
+ '@tediousjs/connection-string@0.5.0': {}
+
+ '@tokenizer/token@0.3.0': {}
'@tsconfig/node10@1.0.11': {}
@@ -2293,73 +6540,174 @@ snapshots:
'@tsconfig/node16@1.0.4': {}
- '@turbo/gen@2.4.4(@types/node@22.13.10)(typescript@5.8.2)':
- dependencies:
- '@turbo/workspaces': 2.4.4
- commander: 10.0.1
- fs-extra: 10.1.0
- inquirer: 8.2.6
- minimatch: 9.0.5
- node-plop: 0.26.3
- picocolors: 1.0.1
- proxy-agent: 6.5.0
- ts-node: 10.9.2(@types/node@22.13.10)(typescript@5.8.2)
- update-check: 1.5.4
- validate-npm-package-name: 5.0.1
- transitivePeerDependencies:
- - '@swc/core'
- - '@swc/wasm'
- - '@types/node'
- - supports-color
- - typescript
+ '@types/async-lock@1.4.2': {}
- '@turbo/workspaces@2.4.4':
+ '@types/babel__core@7.20.5':
dependencies:
- commander: 10.0.1
- execa: 5.1.1
- fast-glob: 3.3.3
- fs-extra: 10.1.0
- gradient-string: 2.0.2
- inquirer: 8.2.6
- js-yaml: 4.1.0
- ora: 4.1.1
- picocolors: 1.0.1
- semver: 7.6.2
- update-check: 1.5.4
+ '@babel/parser': 7.26.10
+ '@babel/types': 7.26.10
+ '@types/babel__generator': 7.6.8
+ '@types/babel__template': 7.4.4
+ '@types/babel__traverse': 7.20.6
+
+ '@types/babel__generator@7.6.8':
+ dependencies:
+ '@babel/types': 7.26.10
+
+ '@types/babel__template@7.4.4':
+ dependencies:
+ '@babel/parser': 7.26.10
+ '@babel/types': 7.26.10
+
+ '@types/babel__traverse@7.20.6':
+ dependencies:
+ '@babel/types': 7.26.10
+
+ '@types/bcrypt@5.0.2':
+ dependencies:
+ '@types/node': 22.13.10
+
+ '@types/body-parser@1.19.5':
+ dependencies:
+ '@types/connect': 3.4.38
+ '@types/node': 22.13.10
+
+ '@types/cls-hooked@4.3.9':
+ dependencies:
+ '@types/node': 22.13.10
+
+ '@types/connect@3.4.38':
+ dependencies:
+ '@types/node': 22.13.10
+
+ '@types/cookiejar@2.1.5': {}
+
+ '@types/eslint-scope@3.7.7':
+ dependencies:
+ '@types/eslint': 9.6.1
+ '@types/estree': 1.0.6
+
+ '@types/eslint@9.6.1':
+ dependencies:
+ '@types/estree': 1.0.6
+ '@types/json-schema': 7.0.15
'@types/estree@1.0.6': {}
- '@types/glob@7.2.0':
+ '@types/express-serve-static-core@5.0.6':
+ dependencies:
+ '@types/node': 22.13.10
+ '@types/qs': 6.9.18
+ '@types/range-parser': 1.2.7
+ '@types/send': 0.17.4
+
+ '@types/express@5.0.1':
+ dependencies:
+ '@types/body-parser': 1.19.5
+ '@types/express-serve-static-core': 5.0.6
+ '@types/serve-static': 1.15.7
+
+ '@types/graceful-fs@4.1.9':
dependencies:
- '@types/minimatch': 5.1.2
'@types/node': 22.13.10
- '@types/inquirer@6.5.0':
+ '@types/http-cache-semantics@4.0.4': {}
+
+ '@types/http-errors@2.0.4': {}
+
+ '@types/istanbul-lib-coverage@2.0.6': {}
+
+ '@types/istanbul-lib-report@3.0.3':
dependencies:
- '@types/through': 0.0.33
- rxjs: 6.6.7
+ '@types/istanbul-lib-coverage': 2.0.6
+
+ '@types/istanbul-reports@3.0.4':
+ dependencies:
+ '@types/istanbul-lib-report': 3.0.3
+
+ '@types/jest@29.5.14':
+ dependencies:
+ expect: 29.7.0
+ pretty-format: 29.7.0
'@types/json-schema@7.0.15': {}
- '@types/minimatch@5.1.2': {}
+ '@types/jsonwebtoken@9.0.7':
+ dependencies:
+ '@types/node': 22.13.10
+
+ '@types/jsonwebtoken@9.0.9':
+ dependencies:
+ '@types/ms': 2.1.0
+ '@types/node': 22.13.10
+
+ '@types/lodash@4.17.16': {}
+
+ '@types/luxon@3.4.2': {}
+
+ '@types/methods@1.1.4': {}
+
+ '@types/mime@1.3.5': {}
+
+ '@types/ms@2.1.0': {}
'@types/node@22.13.10':
dependencies:
undici-types: 6.20.0
- '@types/react-dom@19.0.4(@types/react@19.0.10)':
+ '@types/passport-jwt@4.0.1':
dependencies:
- '@types/react': 19.0.10
+ '@types/jsonwebtoken': 9.0.9
+ '@types/passport-strategy': 0.2.38
- '@types/react@19.0.10':
+ '@types/passport-strategy@0.2.38':
dependencies:
- csstype: 3.1.3
+ '@types/express': 5.0.1
+ '@types/passport': 1.0.17
- '@types/through@0.0.33':
+ '@types/passport@1.0.17':
+ dependencies:
+ '@types/express': 5.0.1
+
+ '@types/qs@6.9.18': {}
+
+ '@types/range-parser@1.2.7': {}
+
+ '@types/readable-stream@4.0.18':
dependencies:
'@types/node': 22.13.10
+ safe-buffer: 5.1.2
- '@types/tinycolor2@1.4.6': {}
+ '@types/send@0.17.4':
+ dependencies:
+ '@types/mime': 1.3.5
+ '@types/node': 22.13.10
+
+ '@types/serve-static@1.15.7':
+ dependencies:
+ '@types/http-errors': 2.0.4
+ '@types/node': 22.13.10
+ '@types/send': 0.17.4
+
+ '@types/stack-utils@2.0.3': {}
+
+ '@types/superagent@8.1.9':
+ dependencies:
+ '@types/cookiejar': 2.1.5
+ '@types/methods': 1.1.4
+ '@types/node': 22.13.10
+ form-data: 4.0.2
+
+ '@types/supertest@6.0.2':
+ dependencies:
+ '@types/methods': 1.1.4
+ '@types/superagent': 8.1.9
+
+ '@types/yargs-parser@21.0.3': {}
+
+ '@types/yargs@17.0.33':
+ dependencies:
+ '@types/yargs-parser': 21.0.3
'@typescript-eslint/eslint-plugin@8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)':
dependencies:
@@ -2438,6 +6786,167 @@ snapshots:
'@typescript-eslint/types': 8.26.0
eslint-visitor-keys: 4.2.0
+ '@webassemblyjs/ast@1.14.1':
+ dependencies:
+ '@webassemblyjs/helper-numbers': 1.13.2
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+
+ '@webassemblyjs/floating-point-hex-parser@1.13.2': {}
+
+ '@webassemblyjs/helper-api-error@1.13.2': {}
+
+ '@webassemblyjs/helper-buffer@1.14.1': {}
+
+ '@webassemblyjs/helper-numbers@1.13.2':
+ dependencies:
+ '@webassemblyjs/floating-point-hex-parser': 1.13.2
+ '@webassemblyjs/helper-api-error': 1.13.2
+ '@xtuc/long': 4.2.2
+
+ '@webassemblyjs/helper-wasm-bytecode@1.13.2': {}
+
+ '@webassemblyjs/helper-wasm-section@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/wasm-gen': 1.14.1
+
+ '@webassemblyjs/ieee754@1.13.2':
+ dependencies:
+ '@xtuc/ieee754': 1.2.0
+
+ '@webassemblyjs/leb128@1.13.2':
+ dependencies:
+ '@xtuc/long': 4.2.2
+
+ '@webassemblyjs/utf8@1.13.2': {}
+
+ '@webassemblyjs/wasm-edit@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/helper-wasm-section': 1.14.1
+ '@webassemblyjs/wasm-gen': 1.14.1
+ '@webassemblyjs/wasm-opt': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+ '@webassemblyjs/wast-printer': 1.14.1
+
+ '@webassemblyjs/wasm-gen@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/ieee754': 1.13.2
+ '@webassemblyjs/leb128': 1.13.2
+ '@webassemblyjs/utf8': 1.13.2
+
+ '@webassemblyjs/wasm-opt@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/wasm-gen': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+
+ '@webassemblyjs/wasm-parser@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-api-error': 1.13.2
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/ieee754': 1.13.2
+ '@webassemblyjs/leb128': 1.13.2
+ '@webassemblyjs/utf8': 1.13.2
+
+ '@webassemblyjs/wast-printer@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@xtuc/long': 4.2.2
+
+ '@xhmikosr/archive-type@7.0.0':
+ dependencies:
+ file-type: 19.6.0
+
+ '@xhmikosr/bin-check@7.0.3':
+ dependencies:
+ execa: 5.1.1
+ isexe: 2.0.0
+
+ '@xhmikosr/bin-wrapper@13.0.5':
+ dependencies:
+ '@xhmikosr/bin-check': 7.0.3
+ '@xhmikosr/downloader': 15.0.1
+ '@xhmikosr/os-filter-obj': 3.0.0
+ bin-version-check: 5.1.0
+
+ '@xhmikosr/decompress-tar@8.0.1':
+ dependencies:
+ file-type: 19.6.0
+ is-stream: 2.0.1
+ tar-stream: 3.1.7
+
+ '@xhmikosr/decompress-tarbz2@8.0.2':
+ dependencies:
+ '@xhmikosr/decompress-tar': 8.0.1
+ file-type: 19.6.0
+ is-stream: 2.0.1
+ seek-bzip: 2.0.0
+ unbzip2-stream: 1.4.3
+
+ '@xhmikosr/decompress-targz@8.0.1':
+ dependencies:
+ '@xhmikosr/decompress-tar': 8.0.1
+ file-type: 19.6.0
+ is-stream: 2.0.1
+
+ '@xhmikosr/decompress-unzip@7.0.0':
+ dependencies:
+ file-type: 19.6.0
+ get-stream: 6.0.1
+ yauzl: 3.2.0
+
+ '@xhmikosr/decompress@10.0.1':
+ dependencies:
+ '@xhmikosr/decompress-tar': 8.0.1
+ '@xhmikosr/decompress-tarbz2': 8.0.2
+ '@xhmikosr/decompress-targz': 8.0.1
+ '@xhmikosr/decompress-unzip': 7.0.0
+ graceful-fs: 4.2.11
+ make-dir: 4.0.0
+ strip-dirs: 3.0.0
+
+ '@xhmikosr/downloader@15.0.1':
+ dependencies:
+ '@xhmikosr/archive-type': 7.0.0
+ '@xhmikosr/decompress': 10.0.1
+ content-disposition: 0.5.4
+ defaults: 3.0.0
+ ext-name: 5.0.0
+ file-type: 19.6.0
+ filenamify: 6.0.0
+ get-stream: 6.0.1
+ got: 13.0.0
+
+ '@xhmikosr/os-filter-obj@3.0.0':
+ dependencies:
+ arch: 3.0.0
+
+ '@xtuc/ieee754@1.2.0': {}
+
+ '@xtuc/long@4.2.2': {}
+
+ abbrev@1.1.1: {}
+
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
+ abstract-logging@2.0.1: {}
+
+ accepts@2.0.0:
+ dependencies:
+ mime-types: 3.0.0
+ negotiator: 1.0.0
+
acorn-jsx@5.3.2(acorn@8.14.1):
dependencies:
acorn: 8.14.1
@@ -2446,16 +6955,32 @@ snapshots:
dependencies:
acorn: 8.14.1
- acorn@8.14.0: {}
-
acorn@8.14.1: {}
+ agent-base@6.0.2:
+ dependencies:
+ debug: 4.4.0
+ transitivePeerDependencies:
+ - supports-color
+
agent-base@7.1.3: {}
- aggregate-error@3.1.0:
+ ajv-formats@2.1.1(ajv@8.17.1):
+ optionalDependencies:
+ ajv: 8.17.1
+
+ ajv-formats@3.0.1(ajv@8.17.1):
+ optionalDependencies:
+ ajv: 8.17.1
+
+ ajv-keywords@3.5.2(ajv@6.12.6):
dependencies:
- clean-stack: 2.2.0
- indent-string: 4.0.0
+ ajv: 6.12.6
+
+ ajv-keywords@5.1.0(ajv@8.17.1):
+ dependencies:
+ ajv: 8.17.1
+ fast-deep-equal: 3.1.3
ajv@6.12.6:
dependencies:
@@ -2464,96 +6989,182 @@ snapshots:
json-schema-traverse: 0.4.1
uri-js: 4.4.1
+ ajv@8.17.1:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.0.6
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
+ ansi-align@3.0.1:
+ dependencies:
+ string-width: 4.2.3
+
+ ansi-colors@4.1.3: {}
+
ansi-escapes@4.3.2:
dependencies:
type-fest: 0.21.3
ansi-regex@5.0.1: {}
- ansi-styles@3.2.1:
- dependencies:
- color-convert: 1.9.3
+ ansi-regex@6.1.0: {}
ansi-styles@4.3.0:
dependencies:
color-convert: 2.0.1
+ ansi-styles@5.2.0: {}
+
+ ansi-styles@6.2.1: {}
+
+ ansis@3.16.0: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ app-root-path@3.1.0: {}
+
+ append-field@1.0.0: {}
+
+ aproba@2.0.0: {}
+
+ arch@3.0.0: {}
+
+ are-we-there-yet@2.0.0:
+ dependencies:
+ delegates: 1.0.0
+ readable-stream: 3.6.2
+
arg@4.1.3: {}
+ argon2@0.41.1:
+ dependencies:
+ '@phc/format': 1.0.0
+ node-addon-api: 8.3.1
+ node-gyp-build: 4.8.4
+
+ argparse@1.0.10:
+ dependencies:
+ sprintf-js: 1.0.3
+
argparse@2.0.1: {}
- array-buffer-byte-length@1.0.2:
+ array-timsort@1.0.3: {}
+
+ asap@2.0.6: {}
+
+ async-hook-jl@1.7.6:
dependencies:
- call-bound: 1.0.4
- is-array-buffer: 3.0.5
+ stack-chain: 1.3.7
- array-includes@3.1.8:
+ async-lock@1.4.1: {}
+
+ async@3.2.6: {}
+
+ asynckit@0.4.0: {}
+
+ atomic-sleep@1.0.0: {}
+
+ avvio@9.1.0:
dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- is-string: 1.1.1
+ '@fastify/error': 4.1.0
+ fastq: 1.19.1
- array-union@2.1.0: {}
-
- array.prototype.findlast@1.2.5:
+ axios@1.8.4:
dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-shim-unscopables: 1.1.0
+ follow-redirects: 1.15.9
+ form-data: 4.0.2
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
- array.prototype.flat@1.3.3:
+ b4a@1.6.7: {}
+
+ babel-jest@29.7.0(@babel/core@7.26.10):
dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-shim-unscopables: 1.1.0
+ '@babel/core': 7.26.10
+ '@jest/transform': 29.7.0
+ '@types/babel__core': 7.20.5
+ babel-plugin-istanbul: 6.1.1
+ babel-preset-jest: 29.6.3(@babel/core@7.26.10)
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ slash: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
- array.prototype.flatmap@1.3.3:
+ babel-plugin-istanbul@6.1.1:
dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-shim-unscopables: 1.1.0
+ '@babel/helper-plugin-utils': 7.26.5
+ '@istanbuljs/load-nyc-config': 1.1.0
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-instrument: 5.2.1
+ test-exclude: 6.0.0
+ transitivePeerDependencies:
+ - supports-color
- array.prototype.tosorted@1.1.4:
+ babel-plugin-jest-hoist@29.6.3:
dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-shim-unscopables: 1.1.0
+ '@babel/template': 7.26.9
+ '@babel/types': 7.26.10
+ '@types/babel__core': 7.20.5
+ '@types/babel__traverse': 7.20.6
- arraybuffer.prototype.slice@1.0.4:
+ babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.10):
dependencies:
- array-buffer-byte-length: 1.0.2
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- is-array-buffer: 3.0.5
+ '@babel/core': 7.26.10
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.10)
+ '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.10)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.10)
+ '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.10)
+ '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.10)
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.10)
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.10)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10)
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.10)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.10)
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.10)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10)
+ '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10)
+ '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10)
- ast-types@0.13.4:
+ babel-preset-jest@29.6.3(@babel/core@7.26.10):
dependencies:
- tslib: 2.8.1
-
- async-function@1.0.0: {}
-
- available-typed-arrays@1.0.7:
- dependencies:
- possible-typed-array-names: 1.1.0
+ '@babel/core': 7.26.10
+ babel-plugin-jest-hoist: 29.6.3
+ babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10)
balanced-match@1.0.2: {}
+ bare-events@2.5.4:
+ optional: true
+
base64-js@1.5.1: {}
- basic-ftp@5.0.5: {}
+ bcrypt@5.1.1:
+ dependencies:
+ '@mapbox/node-pre-gyp': 1.0.11
+ node-addon-api: 5.1.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ bin-version-check@5.1.0:
+ dependencies:
+ bin-version: 6.0.0
+ semver: 7.7.1
+ semver-truncate: 3.0.0
+
+ bin-version@6.0.0:
+ dependencies:
+ execa: 5.1.1
+ find-versions: 5.1.0
+
+ binary-extensions@2.3.0: {}
bl@4.1.0:
dependencies:
@@ -2561,6 +7172,38 @@ snapshots:
inherits: 2.0.4
readable-stream: 3.6.2
+ bl@6.1.0:
+ dependencies:
+ '@types/readable-stream': 4.0.18
+ buffer: 6.0.3
+ inherits: 2.0.4
+ readable-stream: 4.7.0
+
+ body-parser@2.1.0:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 4.4.0
+ http-errors: 2.0.0
+ iconv-lite: 0.5.2
+ on-finished: 2.4.1
+ qs: 6.14.0
+ raw-body: 3.0.0
+ type-is: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ boxen@5.1.2:
+ dependencies:
+ ansi-align: 3.0.1
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ cli-boxes: 2.2.1
+ string-width: 4.2.3
+ type-fest: 0.20.2
+ widest-line: 3.1.0
+ wrap-ansi: 7.0.0
+
brace-expansion@1.1.11:
dependencies:
balanced-match: 1.0.2
@@ -2574,27 +7217,69 @@ snapshots:
dependencies:
fill-range: 7.1.1
+ browserslist@4.24.4:
+ dependencies:
+ caniuse-lite: 1.0.30001706
+ electron-to-chromium: 1.5.122
+ node-releases: 2.0.19
+ update-browserslist-db: 1.1.3(browserslist@4.24.4)
+
+ bs-logger@0.2.6:
+ dependencies:
+ fast-json-stable-stringify: 2.1.0
+
+ bser@2.1.1:
+ dependencies:
+ node-int64: 0.4.0
+
+ buffer-crc32@0.2.13: {}
+
+ buffer-equal-constant-time@1.0.1: {}
+
+ buffer-from@1.1.2: {}
+
buffer@5.7.1:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
+ buffer@6.0.3:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ bundle-name@4.1.0:
+ dependencies:
+ run-applescript: 7.0.0
+
busboy@1.6.0:
dependencies:
streamsearch: 1.1.0
+ bytes@3.1.2: {}
+
+ cacheable-lookup@7.0.0: {}
+
+ cacheable-request@10.2.14:
+ dependencies:
+ '@types/http-cache-semantics': 4.0.4
+ get-stream: 6.0.1
+ http-cache-semantics: 4.1.1
+ keyv: 4.5.4
+ mimic-response: 4.0.0
+ normalize-url: 8.0.1
+ responselike: 3.0.0
+
+ cacheable@1.8.9:
+ dependencies:
+ hookified: 1.8.1
+ keyv: 5.3.2
+
call-bind-apply-helpers@1.0.2:
dependencies:
es-errors: 1.3.0
function-bind: 1.1.2
- call-bind@1.0.8:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-define-property: 1.0.1
- get-intrinsic: 1.3.0
- set-function-length: 1.2.2
-
call-bound@1.0.4:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -2602,53 +7287,48 @@ snapshots:
callsites@3.1.0: {}
- camel-case@3.0.0:
- dependencies:
- no-case: 2.3.2
- upper-case: 1.1.3
+ camelcase@5.3.1: {}
- caniuse-lite@1.0.30001701: {}
+ camelcase@6.3.0: {}
- chalk@2.4.2:
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
-
- chalk@3.0.0:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
+ caniuse-lite@1.0.30001706: {}
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
supports-color: 7.2.0
- change-case@3.1.0:
- dependencies:
- camel-case: 3.0.0
- constant-case: 2.0.0
- dot-case: 2.1.1
- header-case: 1.0.1
- is-lower-case: 1.1.3
- is-upper-case: 1.1.2
- lower-case: 1.1.4
- lower-case-first: 1.0.2
- no-case: 2.3.2
- param-case: 2.1.1
- pascal-case: 2.0.1
- path-case: 2.1.1
- sentence-case: 2.1.1
- snake-case: 2.1.0
- swap-case: 1.1.2
- title-case: 2.1.1
- upper-case: 1.1.3
- upper-case-first: 1.1.2
+ char-regex@1.0.2: {}
chardet@0.7.0: {}
- clean-stack@2.2.0: {}
+ check-disk-space@3.4.0: {}
+
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ chokidar@4.0.3:
+ dependencies:
+ readdirp: 4.1.2
+
+ chownr@2.0.0: {}
+
+ chrome-trace-event@1.0.4: {}
+
+ ci-info@3.9.0: {}
+
+ cjs-module-lexer@1.4.3: {}
+
+ cli-boxes@2.2.1: {}
cli-cursor@3.1.0:
dependencies:
@@ -2656,221 +7336,278 @@ snapshots:
cli-spinners@2.9.2: {}
- cli-width@3.0.0: {}
+ cli-table3@0.6.5:
+ dependencies:
+ string-width: 4.2.3
+ optionalDependencies:
+ '@colors/colors': 1.5.0
- client-only@0.0.1: {}
+ cli-width@4.1.0: {}
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
clone@1.0.4: {}
- color-convert@1.9.3:
+ cls-hooked@4.2.2:
dependencies:
- color-name: 1.1.3
+ async-hook-jl: 1.7.6
+ emitter-listener: 1.1.2
+ semver: 5.7.2
+
+ cluster-key-slot@1.1.2: {}
+
+ co@4.6.0: {}
+
+ collect-v8-coverage@1.0.2: {}
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
- color-name@1.1.3: {}
-
color-name@1.1.4: {}
- color-string@1.9.1:
- dependencies:
- color-name: 1.1.4
- simple-swizzle: 0.2.2
- optional: true
+ color-support@1.1.3: {}
- color@4.2.3:
- dependencies:
- color-convert: 2.0.1
- color-string: 1.9.1
- optional: true
+ colorette@2.0.20: {}
- commander@10.0.1: {}
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ commander@11.1.0: {}
+
+ commander@2.20.3: {}
+
+ commander@4.1.1: {}
+
+ commander@6.2.1: {}
+
+ commander@8.3.0: {}
+
+ comment-json@4.2.5:
+ dependencies:
+ array-timsort: 1.0.3
+ core-util-is: 1.0.3
+ esprima: 4.0.1
+ has-own-prop: 2.0.0
+ repeat-string: 1.6.1
+
+ component-emitter@1.3.1: {}
concat-map@0.0.1: {}
- constant-case@2.0.0:
+ concat-stream@1.6.2:
dependencies:
- snake-case: 2.1.0
- upper-case: 1.1.3
+ buffer-from: 1.1.2
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+ typedarray: 0.0.6
- core-js-pure@3.41.0: {}
+ connection-string@4.4.0: {}
+
+ consola@3.4.2: {}
+
+ console-control-strings@1.1.0: {}
+
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-disposition@1.0.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-type@1.0.5: {}
+
+ convert-source-map@2.0.0: {}
+
+ cookie-signature@1.2.2: {}
+
+ cookie@0.7.1: {}
+
+ cookie@1.0.2: {}
+
+ cookiejar@2.1.4: {}
+
+ core-util-is@1.0.3: {}
+
+ cors@2.8.5:
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+
+ cosmiconfig@8.3.6(typescript@5.7.3):
+ dependencies:
+ import-fresh: 3.3.1
+ js-yaml: 4.1.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ optionalDependencies:
+ typescript: 5.7.3
+
+ create-jest@29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)):
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-config: 29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+ jest-util: 29.7.0
+ prompts: 2.4.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
create-require@1.1.1: {}
+ cron@3.5.0:
+ dependencies:
+ '@types/luxon': 3.4.2
+ luxon: 3.5.0
+
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
- csstype@3.1.3: {}
+ dateformat@4.6.3: {}
- data-uri-to-buffer@6.0.2: {}
+ dayjs@1.11.13: {}
- data-view-buffer@1.0.2:
+ debug@2.6.9:
dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
+ ms: 2.0.0
- data-view-byte-length@1.0.2:
+ debug@4.3.6:
dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
-
- data-view-byte-offset@1.0.1:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
+ ms: 2.1.2
debug@4.4.0:
dependencies:
ms: 2.1.3
- deep-extend@0.6.0: {}
+ decompress-response@6.0.0:
+ dependencies:
+ mimic-response: 3.1.0
+
+ dedent@1.5.3: {}
deep-is@0.1.4: {}
+ deepmerge@4.3.1: {}
+
+ default-browser-id@5.0.0: {}
+
+ default-browser@5.2.1:
+ dependencies:
+ bundle-name: 4.1.0
+ default-browser-id: 5.0.0
+
defaults@1.0.4:
dependencies:
clone: 1.0.4
- define-data-property@1.1.4:
- dependencies:
- es-define-property: 1.0.1
- es-errors: 1.3.0
- gopd: 1.2.0
+ defaults@3.0.0: {}
- define-properties@1.2.1:
- dependencies:
- define-data-property: 1.1.4
- has-property-descriptors: 1.0.2
- object-keys: 1.1.1
+ defer-to-connect@2.0.1: {}
- degenerator@5.0.1:
- dependencies:
- ast-types: 0.13.4
- escodegen: 2.1.0
- esprima: 4.0.1
+ define-lazy-prop@3.0.0: {}
- del@5.1.0:
- dependencies:
- globby: 10.0.2
- graceful-fs: 4.2.11
- is-glob: 4.0.3
- is-path-cwd: 2.2.0
- is-path-inside: 3.0.3
- p-map: 3.0.0
- rimraf: 3.0.2
- slash: 3.0.0
+ delayed-stream@1.0.0: {}
- detect-libc@2.0.3:
- optional: true
+ delegates@1.0.0: {}
+
+ depd@2.0.0: {}
+
+ dequal@2.0.3: {}
+
+ destroy@1.2.0: {}
+
+ detect-libc@2.0.3: {}
+
+ detect-newline@3.1.0: {}
+
+ dezalgo@1.0.4:
+ dependencies:
+ asap: 2.0.6
+ wrappy: 1.0.2
+
+ diff-sequences@29.6.3: {}
diff@4.0.2: {}
- dir-glob@3.0.1:
+ dotenv-expand@12.0.1:
dependencies:
- path-type: 4.0.0
-
- doctrine@2.1.0:
- dependencies:
- esutils: 2.0.3
-
- dot-case@2.1.1:
- dependencies:
- no-case: 2.3.2
+ dotenv: 16.4.7
dotenv@16.0.3: {}
+ dotenv@16.4.7: {}
+
dunder-proto@1.0.1:
dependencies:
call-bind-apply-helpers: 1.0.2
es-errors: 1.3.0
gopd: 1.2.0
+ duplexify@4.1.3:
+ dependencies:
+ end-of-stream: 1.4.4
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ stream-shift: 1.0.3
+
+ eastasianwidth@0.2.0: {}
+
+ ecdsa-sig-formatter@1.0.11:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ ee-first@1.1.1: {}
+
+ ejs@3.1.10:
+ dependencies:
+ jake: 10.9.2
+
+ electron-to-chromium@1.5.122: {}
+
+ emitter-listener@1.1.2:
+ dependencies:
+ shimmer: 1.2.1
+
+ emittery@0.13.1: {}
+
emoji-regex@8.0.0: {}
- es-abstract@1.23.9:
+ emoji-regex@9.2.2: {}
+
+ encodeurl@2.0.0: {}
+
+ end-of-stream@1.4.4:
dependencies:
- array-buffer-byte-length: 1.0.2
- arraybuffer.prototype.slice: 1.0.4
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- call-bound: 1.0.4
- data-view-buffer: 1.0.2
- data-view-byte-length: 1.0.2
- data-view-byte-offset: 1.0.1
- es-define-property: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-set-tostringtag: 2.1.0
- es-to-primitive: 1.3.0
- function.prototype.name: 1.1.8
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- get-symbol-description: 1.1.0
- globalthis: 1.0.4
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
- has-proto: 1.2.0
- has-symbols: 1.1.0
- hasown: 2.0.2
- internal-slot: 1.1.0
- is-array-buffer: 3.0.5
- is-callable: 1.2.7
- is-data-view: 1.0.2
- is-regex: 1.2.1
- is-shared-array-buffer: 1.0.4
- is-string: 1.1.1
- is-typed-array: 1.1.15
- is-weakref: 1.1.1
- math-intrinsics: 1.1.0
- object-inspect: 1.13.4
- object-keys: 1.1.1
- object.assign: 4.1.7
- own-keys: 1.0.1
- regexp.prototype.flags: 1.5.4
- safe-array-concat: 1.1.3
- safe-push-apply: 1.0.0
- safe-regex-test: 1.1.0
- set-proto: 1.0.0
- string.prototype.trim: 1.2.10
- string.prototype.trimend: 1.0.9
- string.prototype.trimstart: 1.0.8
- typed-array-buffer: 1.0.3
- typed-array-byte-length: 1.0.3
- typed-array-byte-offset: 1.0.4
- typed-array-length: 1.0.7
- unbox-primitive: 1.1.0
- which-typed-array: 1.1.18
+ once: 1.4.0
+
+ enhanced-resolve@5.18.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+
+ error-ex@1.3.2:
+ dependencies:
+ is-arrayish: 0.2.1
es-define-property@1.0.1: {}
es-errors@1.3.0: {}
- es-iterator-helpers@1.2.1:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-set-tostringtag: 2.1.0
- function-bind: 1.1.2
- get-intrinsic: 1.3.0
- globalthis: 1.0.4
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
- has-proto: 1.2.0
- has-symbols: 1.1.0
- internal-slot: 1.1.0
- iterator.prototype: 1.1.5
- safe-array-concat: 1.1.3
+ es-module-lexer@1.6.0: {}
es-object-atoms@1.1.1:
dependencies:
@@ -2883,59 +7620,29 @@ snapshots:
has-tostringtag: 1.0.2
hasown: 2.0.2
- es-shim-unscopables@1.1.0:
- dependencies:
- hasown: 2.0.2
+ escalade@3.2.0: {}
- es-to-primitive@1.3.0:
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.1.0
- is-symbol: 1.1.1
+ escape-html@1.0.3: {}
- escape-string-regexp@1.0.5: {}
+ escape-string-regexp@2.0.0: {}
escape-string-regexp@4.0.0: {}
- escodegen@2.1.0:
- dependencies:
- esprima: 4.0.1
- estraverse: 5.3.0
- esutils: 2.0.3
- optionalDependencies:
- source-map: 0.6.1
-
eslint-config-prettier@10.1.1(eslint@9.22.0):
dependencies:
eslint: 9.22.0
eslint-plugin-only-warn@1.1.0: {}
- eslint-plugin-react-hooks@5.2.0(eslint@9.22.0):
+ eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.1.1(eslint@9.22.0))(eslint@9.22.0)(prettier@3.5.3):
dependencies:
eslint: 9.22.0
-
- eslint-plugin-react@7.37.4(eslint@9.22.0):
- dependencies:
- array-includes: 3.1.8
- array.prototype.findlast: 1.2.5
- array.prototype.flatmap: 1.3.3
- array.prototype.tosorted: 1.1.4
- doctrine: 2.1.0
- es-iterator-helpers: 1.2.1
- eslint: 9.22.0
- estraverse: 5.3.0
- hasown: 2.0.2
- jsx-ast-utils: 3.3.5
- minimatch: 3.1.2
- object.entries: 1.1.8
- object.fromentries: 2.0.8
- object.values: 1.2.1
- prop-types: 15.8.1
- resolve: 2.0.0-next.5
- semver: 6.3.1
- string.prototype.matchall: 4.0.12
- string.prototype.repeat: 1.0.0
+ prettier: 3.5.3
+ prettier-linter-helpers: 1.0.0
+ synckit: 0.9.2
+ optionalDependencies:
+ '@types/eslint': 9.6.1
+ eslint-config-prettier: 10.1.1(eslint@9.22.0)
eslint-plugin-turbo@2.4.4(eslint@9.22.0)(turbo@2.4.4):
dependencies:
@@ -2943,6 +7650,11 @@ snapshots:
eslint: 9.22.0
turbo: 2.4.4
+ eslint-scope@5.1.1:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+
eslint-scope@8.3.0:
dependencies:
esrecurse: 4.3.0
@@ -3008,10 +7720,18 @@ snapshots:
dependencies:
estraverse: 5.3.0
+ estraverse@4.3.0: {}
+
estraverse@5.3.0: {}
esutils@2.0.3: {}
+ etag@1.8.1: {}
+
+ event-target-shim@5.0.1: {}
+
+ events@3.3.0: {}
+
execa@5.1.1:
dependencies:
cross-spawn: 7.0.6
@@ -3024,21 +7744,77 @@ snapshots:
signal-exit: 3.0.7
strip-final-newline: 2.0.0
+ exit@0.1.2: {}
+
+ expect@29.7.0:
+ dependencies:
+ '@jest/expect-utils': 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+
+ express@5.0.1:
+ dependencies:
+ accepts: 2.0.0
+ body-parser: 2.1.0
+ content-disposition: 1.0.0
+ content-type: 1.0.5
+ cookie: 0.7.1
+ cookie-signature: 1.2.2
+ debug: 4.3.6
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 2.1.0
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ merge-descriptors: 2.0.0
+ methods: 1.1.2
+ mime-types: 3.0.0
+ on-finished: 2.4.1
+ once: 1.4.0
+ parseurl: 1.3.3
+ proxy-addr: 2.0.7
+ qs: 6.13.0
+ range-parser: 1.2.1
+ router: 2.1.0
+ safe-buffer: 5.2.1
+ send: 1.1.0
+ serve-static: 2.1.0
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 2.0.0
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ ext-list@2.2.2:
+ dependencies:
+ mime-db: 1.54.0
+
+ ext-name@5.0.0:
+ dependencies:
+ ext-list: 2.2.2
+ sort-keys-length: 1.0.1
+
external-editor@3.1.0:
dependencies:
chardet: 0.7.0
iconv-lite: 0.4.24
tmp: 0.0.33
+ fast-copy@3.0.2: {}
+
+ fast-decode-uri-component@1.0.1: {}
+
fast-deep-equal@3.1.3: {}
- fast-glob@3.3.1:
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.8
+ fast-diff@1.3.0: {}
+
+ fast-fifo@1.3.2: {}
fast-glob@3.3.3:
dependencies:
@@ -3050,29 +7826,111 @@ snapshots:
fast-json-stable-stringify@2.1.0: {}
+ fast-json-stringify@6.0.1:
+ dependencies:
+ '@fastify/merge-json-schemas': 0.2.1
+ ajv: 8.17.1
+ ajv-formats: 3.0.1(ajv@8.17.1)
+ fast-uri: 3.0.6
+ json-schema-ref-resolver: 2.0.1
+ rfdc: 1.4.1
+
fast-levenshtein@2.0.6: {}
+ fast-querystring@1.1.2:
+ dependencies:
+ fast-decode-uri-component: 1.0.1
+
+ fast-redact@3.5.0: {}
+
+ fast-safe-stringify@2.1.1: {}
+
+ fast-uri@3.0.6: {}
+
+ fastify-plugin@5.0.1: {}
+
+ fastify@5.2.1:
+ dependencies:
+ '@fastify/ajv-compiler': 4.0.2
+ '@fastify/error': 4.1.0
+ '@fastify/fast-json-stringify-compiler': 5.0.2
+ '@fastify/proxy-addr': 5.0.0
+ abstract-logging: 2.0.1
+ avvio: 9.1.0
+ fast-json-stringify: 6.0.1
+ find-my-way: 9.2.0
+ light-my-request: 6.6.0
+ pino: 9.6.0
+ process-warning: 4.0.1
+ rfdc: 1.4.1
+ secure-json-parse: 3.0.2
+ semver: 7.7.1
+ toad-cache: 3.7.0
+
fastq@1.19.1:
dependencies:
reusify: 1.1.0
- figures@3.2.0:
+ fb-watchman@2.0.2:
dependencies:
- escape-string-regexp: 1.0.5
+ bser: 2.1.1
file-entry-cache@8.0.0:
dependencies:
flat-cache: 4.0.1
+ file-type@19.6.0:
+ dependencies:
+ get-stream: 9.0.1
+ strtok3: 9.1.1
+ token-types: 6.0.0
+ uint8array-extras: 1.4.0
+
+ filelist@1.0.4:
+ dependencies:
+ minimatch: 5.1.6
+
+ filename-reserved-regex@3.0.0: {}
+
+ filenamify@6.0.0:
+ dependencies:
+ filename-reserved-regex: 3.0.0
+
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
+ finalhandler@2.1.0:
+ dependencies:
+ debug: 4.4.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ find-my-way@9.2.0:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-querystring: 1.1.2
+ safe-regex2: 4.0.1
+
+ find-up@4.1.0:
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+
find-up@5.0.0:
dependencies:
locate-path: 6.0.0
path-exists: 4.0.0
+ find-versions@5.1.0:
+ dependencies:
+ semver-regex: 4.0.5
+
flat-cache@4.0.1:
dependencies:
flatted: 3.3.3
@@ -3080,9 +7938,50 @@ snapshots:
flatted@3.3.3: {}
- for-each@0.3.5:
+ follow-redirects@1.15.9: {}
+
+ foreground-child@3.3.1:
dependencies:
- is-callable: 1.2.7
+ cross-spawn: 7.0.6
+ signal-exit: 4.1.0
+
+ fork-ts-checker-webpack-plugin@9.0.2(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.11.11)):
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ chalk: 4.1.2
+ chokidar: 3.6.0
+ cosmiconfig: 8.3.6(typescript@5.7.3)
+ deepmerge: 4.3.1
+ fs-extra: 10.1.0
+ memfs: 3.5.3
+ minimatch: 3.1.2
+ node-abort-controller: 3.1.1
+ schema-utils: 3.3.0
+ semver: 7.7.1
+ tapable: 2.2.1
+ typescript: 5.7.3
+ webpack: 5.98.0(@swc/core@1.11.11)
+
+ form-data-encoder@2.1.4: {}
+
+ form-data@4.0.2:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ mime-types: 2.1.35
+
+ formidable@3.5.2:
+ dependencies:
+ dezalgo: 1.0.4
+ hexoid: 2.0.0
+ once: 1.4.0
+
+ forwarded@0.2.0: {}
+
+ fresh@0.5.2: {}
+
+ fresh@2.0.0: {}
fs-extra@10.1.0:
dependencies:
@@ -3090,20 +7989,36 @@ snapshots:
jsonfile: 6.1.0
universalify: 2.0.1
+ fs-minipass@2.1.0:
+ dependencies:
+ minipass: 3.3.6
+
+ fs-monkey@1.0.6: {}
+
fs.realpath@1.0.0: {}
+ fsevents@2.3.3:
+ optional: true
+
function-bind@1.1.2: {}
- function.prototype.name@1.1.8:
+ gauge@3.0.2:
dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- functions-have-names: 1.2.3
- hasown: 2.0.2
- is-callable: 1.2.7
+ aproba: 2.0.0
+ color-support: 1.1.3
+ console-control-strings: 1.1.0
+ has-unicode: 2.0.1
+ object-assign: 4.1.1
+ signal-exit: 3.0.7
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wide-align: 1.1.5
- functions-have-names@1.2.3: {}
+ generic-pool@3.9.0: {}
+
+ gensync@1.0.0-beta.2: {}
+
+ get-caller-file@2.0.5: {}
get-intrinsic@1.3.0:
dependencies:
@@ -3118,6 +8033,8 @@ snapshots:
hasown: 2.0.2
math-intrinsics: 1.1.0
+ get-package-type@0.1.0: {}
+
get-proto@1.0.1:
dependencies:
dunder-proto: 1.0.1
@@ -3125,19 +8042,10 @@ snapshots:
get-stream@6.0.1: {}
- get-symbol-description@1.1.0:
+ get-stream@9.0.1:
dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
-
- get-uri@6.0.4:
- dependencies:
- basic-ftp: 5.0.5
- data-uri-to-buffer: 6.0.2
- debug: 4.4.0
- transitivePeerDependencies:
- - supports-color
+ '@sec-ant/readable-stream': 0.4.1
+ is-stream: 4.0.1
glob-parent@5.1.2:
dependencies:
@@ -3147,6 +8055,26 @@ snapshots:
dependencies:
is-glob: 4.0.3
+ glob-to-regexp@0.4.1: {}
+
+ glob@10.4.5:
+ dependencies:
+ foreground-child: 3.3.1
+ jackspeak: 3.4.3
+ minimatch: 9.0.5
+ minipass: 7.1.2
+ package-json-from-dist: 1.0.1
+ path-scurry: 1.11.1
+
+ glob@11.0.1:
+ dependencies:
+ foreground-child: 3.3.1
+ jackspeak: 4.1.0
+ minimatch: 10.0.1
+ minipass: 7.1.2
+ package-json-from-dist: 1.0.1
+ path-scurry: 2.0.0
+
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
@@ -3156,59 +8084,35 @@ snapshots:
once: 1.4.0
path-is-absolute: 1.0.1
+ globals@11.12.0: {}
+
globals@14.0.0: {}
globals@16.0.0: {}
- globalthis@1.0.4:
- dependencies:
- define-properties: 1.2.1
- gopd: 1.2.0
-
- globby@10.0.2:
- dependencies:
- '@types/glob': 7.2.0
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.3
- glob: 7.2.3
- ignore: 5.3.2
- merge2: 1.4.1
- slash: 3.0.0
-
gopd@1.2.0: {}
+ got@13.0.0:
+ dependencies:
+ '@sindresorhus/is': 5.6.0
+ '@szmarczak/http-timer': 5.0.1
+ cacheable-lookup: 7.0.0
+ cacheable-request: 10.2.14
+ decompress-response: 6.0.0
+ form-data-encoder: 2.1.4
+ get-stream: 6.0.1
+ http2-wrapper: 2.2.1
+ lowercase-keys: 3.0.0
+ p-cancelable: 3.0.0
+ responselike: 3.0.0
+
graceful-fs@4.2.11: {}
- gradient-string@2.0.2:
- dependencies:
- chalk: 4.1.2
- tinygradient: 1.1.5
-
graphemer@1.4.0: {}
- handlebars@4.7.8:
- dependencies:
- minimist: 1.2.8
- neo-async: 2.6.2
- source-map: 0.6.1
- wordwrap: 1.0.0
- optionalDependencies:
- uglify-js: 3.19.3
-
- has-bigints@1.1.0: {}
-
- has-flag@3.0.0: {}
-
has-flag@4.0.0: {}
- has-property-descriptors@1.0.2:
- dependencies:
- es-define-property: 1.0.1
-
- has-proto@1.2.0:
- dependencies:
- dunder-proto: 1.0.1
+ has-own-prop@2.0.0: {}
has-symbols@1.1.0: {}
@@ -3216,14 +8120,29 @@ snapshots:
dependencies:
has-symbols: 1.1.0
+ has-unicode@2.0.1: {}
+
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
- header-case@1.0.1:
+ help-me@5.0.0: {}
+
+ hexoid@2.0.0: {}
+
+ hookified@1.8.1: {}
+
+ html-escaper@2.0.2: {}
+
+ http-cache-semantics@4.1.1: {}
+
+ http-errors@2.0.0:
dependencies:
- no-case: 2.3.2
- upper-case: 1.1.3
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
http-proxy-agent@7.0.2:
dependencies:
@@ -3232,6 +8151,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ http2-wrapper@2.2.1:
+ dependencies:
+ quick-lru: 5.1.1
+ resolve-alpn: 1.2.1
+
+ https-proxy-agent@5.0.1:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.4.0
+ transitivePeerDependencies:
+ - supports-color
+
https-proxy-agent@7.0.6:
dependencies:
agent-base: 7.1.3
@@ -3245,6 +8176,14 @@ snapshots:
dependencies:
safer-buffer: 2.1.2
+ iconv-lite@0.5.2:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+
ieee754@1.2.1: {}
ignore@5.3.2: {}
@@ -3254,9 +8193,12 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
- imurmurhash@0.1.4: {}
+ import-local@3.2.0:
+ dependencies:
+ pkg-dir: 4.2.0
+ resolve-cwd: 3.0.0
- indent-string@4.0.0: {}
+ imurmurhash@0.1.4: {}
inflight@1.0.6:
dependencies:
@@ -3265,385 +8207,801 @@ snapshots:
inherits@2.0.4: {}
- ini@1.3.8: {}
-
- inquirer@7.3.3:
+ inspect-with-kind@1.0.5:
dependencies:
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- cli-cursor: 3.1.0
- cli-width: 3.0.0
- external-editor: 3.1.0
- figures: 3.2.0
- lodash: 4.17.21
- mute-stream: 0.0.8
- run-async: 2.4.1
- rxjs: 6.6.7
- string-width: 4.2.3
- strip-ansi: 6.0.1
- through: 2.3.8
+ kind-of: 6.0.3
- inquirer@8.2.6:
+ ipaddr.js@1.9.1: {}
+
+ ipaddr.js@2.2.0: {}
+
+ is-arrayish@0.2.1: {}
+
+ is-binary-path@2.1.0:
dependencies:
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- cli-cursor: 3.1.0
- cli-width: 3.0.0
- external-editor: 3.1.0
- figures: 3.2.0
- lodash: 4.17.21
- mute-stream: 0.0.8
- ora: 5.4.1
- run-async: 2.4.1
- rxjs: 7.8.2
- string-width: 4.2.3
- strip-ansi: 6.0.1
- through: 2.3.8
- wrap-ansi: 6.2.0
-
- internal-slot@1.1.0:
- dependencies:
- es-errors: 1.3.0
- hasown: 2.0.2
- side-channel: 1.1.0
-
- ip-address@9.0.5:
- dependencies:
- jsbn: 1.1.0
- sprintf-js: 1.1.3
-
- is-array-buffer@3.0.5:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
-
- is-arrayish@0.3.2:
- optional: true
-
- is-async-function@2.1.1:
- dependencies:
- async-function: 1.0.0
- call-bound: 1.0.4
- get-proto: 1.0.1
- has-tostringtag: 1.0.2
- safe-regex-test: 1.1.0
-
- is-bigint@1.1.0:
- dependencies:
- has-bigints: 1.1.0
-
- is-boolean-object@1.2.2:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-callable@1.2.7: {}
+ binary-extensions: 2.3.0
is-core-module@2.16.1:
dependencies:
hasown: 2.0.2
- is-data-view@1.0.2:
- dependencies:
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
- is-typed-array: 1.1.15
-
- is-date-object@1.1.0:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
+ is-docker@3.0.0: {}
is-extglob@2.1.1: {}
- is-finalizationregistry@1.1.1:
- dependencies:
- call-bound: 1.0.4
-
is-fullwidth-code-point@3.0.0: {}
- is-generator-function@1.1.0:
- dependencies:
- call-bound: 1.0.4
- get-proto: 1.0.1
- has-tostringtag: 1.0.2
- safe-regex-test: 1.1.0
+ is-generator-fn@2.1.0: {}
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
+ is-inside-container@1.0.0:
+ dependencies:
+ is-docker: 3.0.0
+
is-interactive@1.0.0: {}
- is-lower-case@1.1.3:
- dependencies:
- lower-case: 1.1.4
-
- is-map@2.0.3: {}
-
- is-number-object@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
is-number@7.0.0: {}
- is-path-cwd@2.2.0: {}
+ is-plain-obj@1.1.0: {}
- is-path-inside@3.0.3: {}
-
- is-regex@1.2.1:
- dependencies:
- call-bound: 1.0.4
- gopd: 1.2.0
- has-tostringtag: 1.0.2
- hasown: 2.0.2
-
- is-set@2.0.3: {}
-
- is-shared-array-buffer@1.0.4:
- dependencies:
- call-bound: 1.0.4
+ is-promise@4.0.0: {}
is-stream@2.0.1: {}
- is-string@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-symbol@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-symbols: 1.1.0
- safe-regex-test: 1.1.0
-
- is-typed-array@1.1.15:
- dependencies:
- which-typed-array: 1.1.18
+ is-stream@4.0.1: {}
is-unicode-supported@0.1.0: {}
- is-upper-case@1.1.2:
+ is-wsl@3.1.0:
dependencies:
- upper-case: 1.1.3
+ is-inside-container: 1.0.0
- is-weakmap@2.0.2: {}
-
- is-weakref@1.1.1:
- dependencies:
- call-bound: 1.0.4
-
- is-weakset@2.0.4:
- dependencies:
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
-
- isarray@2.0.5: {}
-
- isbinaryfile@4.0.10: {}
+ isarray@1.0.0: {}
isexe@2.0.0: {}
- iterator.prototype@1.1.5:
+ istanbul-lib-coverage@3.2.2: {}
+
+ istanbul-lib-instrument@5.2.1:
dependencies:
- define-data-property: 1.1.4
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- has-symbols: 1.1.0
- set-function-name: 2.0.2
+ '@babel/core': 7.26.10
+ '@babel/parser': 7.26.10
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-lib-instrument@6.0.3:
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/parser': 7.26.10
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 7.7.1
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-lib-report@3.0.1:
+ dependencies:
+ istanbul-lib-coverage: 3.2.2
+ make-dir: 4.0.0
+ supports-color: 7.2.0
+
+ istanbul-lib-source-maps@4.0.1:
+ dependencies:
+ debug: 4.4.0
+ istanbul-lib-coverage: 3.2.2
+ source-map: 0.6.1
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-reports@3.1.7:
+ dependencies:
+ html-escaper: 2.0.2
+ istanbul-lib-report: 3.0.1
+
+ iterare@1.2.1: {}
+
+ jackspeak@3.4.3:
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
+ jackspeak@4.1.0:
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+
+ jake@10.9.2:
+ dependencies:
+ async: 3.2.6
+ chalk: 4.1.2
+ filelist: 1.0.4
+ minimatch: 3.1.2
+
+ jest-changed-files@29.7.0:
+ dependencies:
+ execa: 5.1.1
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+
+ jest-circus@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.13.10
+ chalk: 4.1.2
+ co: 4.6.0
+ dedent: 1.5.3
+ is-generator-fn: 2.1.0
+ jest-each: 29.7.0
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ pretty-format: 29.7.0
+ pure-rand: 6.1.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+
+ jest-cli@29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)):
+ dependencies:
+ '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ create-jest: 29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+ exit: 0.1.2
+ import-local: 3.2.0
+ jest-config: 29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ jest-config@29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)):
+ dependencies:
+ '@babel/core': 7.26.10
+ '@jest/test-sequencer': 29.7.0
+ '@jest/types': 29.6.3
+ babel-jest: 29.7.0(@babel/core@7.26.10)
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ deepmerge: 4.3.1
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-circus: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-get-type: 29.6.3
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-runner: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ micromatch: 4.0.8
+ parse-json: 5.2.0
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-json-comments: 3.1.1
+ optionalDependencies:
+ '@types/node': 22.13.10
+ ts-node: 10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+
+ jest-diff@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 29.6.3
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ jest-docblock@29.7.0:
+ dependencies:
+ detect-newline: 3.1.0
+
+ jest-each@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ jest-util: 29.7.0
+ pretty-format: 29.7.0
+
+ jest-environment-node@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.13.10
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+
+ jest-get-type@29.6.3: {}
+
+ jest-haste-map@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/graceful-fs': 4.1.9
+ '@types/node': 22.13.10
+ anymatch: 3.1.3
+ fb-watchman: 2.0.2
+ graceful-fs: 4.2.11
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ micromatch: 4.0.8
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ jest-leak-detector@29.7.0:
+ dependencies:
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ jest-matcher-utils@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ jest-message-util@29.7.0:
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@jest/types': 29.6.3
+ '@types/stack-utils': 2.0.3
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ micromatch: 4.0.8
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+
+ jest-mock@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 22.13.10
+ jest-util: 29.7.0
+
+ jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
+ optionalDependencies:
+ jest-resolve: 29.7.0
+
+ jest-regex-util@29.6.3: {}
+
+ jest-resolve-dependencies@29.7.0:
+ dependencies:
+ jest-regex-util: 29.6.3
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-resolve@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ resolve: 1.22.10
+ resolve.exports: 2.0.3
+ slash: 3.0.0
+
+ jest-runner@29.7.0:
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/environment': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.13.10
+ chalk: 4.1.2
+ emittery: 0.13.1
+ graceful-fs: 4.2.11
+ jest-docblock: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-haste-map: 29.7.0
+ jest-leak-detector: 29.7.0
+ jest-message-util: 29.7.0
+ jest-resolve: 29.7.0
+ jest-runtime: 29.7.0
+ jest-util: 29.7.0
+ jest-watcher: 29.7.0
+ jest-worker: 29.7.0
+ p-limit: 3.1.0
+ source-map-support: 0.5.13
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-runtime@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/globals': 29.7.0
+ '@jest/source-map': 29.6.3
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.13.10
+ chalk: 4.1.2
+ cjs-module-lexer: 1.4.3
+ collect-v8-coverage: 1.0.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ strip-bom: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-snapshot@29.7.0:
+ dependencies:
+ '@babel/core': 7.26.10
+ '@babel/generator': 7.26.10
+ '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10)
+ '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10)
+ '@babel/types': 7.26.10
+ '@jest/expect-utils': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10)
+ chalk: 4.1.2
+ expect: 29.7.0
+ graceful-fs: 4.2.11
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ natural-compare: 1.4.0
+ pretty-format: 29.7.0
+ semver: 7.7.1
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-util@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 22.13.10
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ graceful-fs: 4.2.11
+ picomatch: 2.3.1
+
+ jest-validate@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ leven: 3.1.0
+ pretty-format: 29.7.0
+
+ jest-watcher@29.7.0:
+ dependencies:
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 22.13.10
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ emittery: 0.13.1
+ jest-util: 29.7.0
+ string-length: 4.0.2
+
+ jest-worker@27.5.1:
+ dependencies:
+ '@types/node': 22.13.10
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ jest-worker@29.7.0:
+ dependencies:
+ '@types/node': 22.13.10
+ jest-util: 29.7.0
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ jest@29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)):
+ dependencies:
+ '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+ '@jest/types': 29.6.3
+ import-local: 3.2.0
+ jest-cli: 29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ joycon@3.1.1: {}
+
+ js-md4@0.3.2: {}
js-tokens@4.0.0: {}
+ js-yaml@3.14.1:
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+
js-yaml@4.1.0:
dependencies:
argparse: 2.0.1
- jsbn@1.1.0: {}
+ jsesc@3.1.0: {}
json-buffer@3.0.1: {}
+ json-parse-even-better-errors@2.3.1: {}
+
+ json-schema-ref-resolver@2.0.1:
+ dependencies:
+ dequal: 2.0.3
+
json-schema-traverse@0.4.1: {}
+ json-schema-traverse@1.0.0: {}
+
json-stable-stringify-without-jsonify@1.0.1: {}
+ json5@2.2.3: {}
+
+ jsonc-parser@3.3.1: {}
+
jsonfile@6.1.0:
dependencies:
universalify: 2.0.1
optionalDependencies:
graceful-fs: 4.2.11
- jsx-ast-utils@3.3.5:
+ jsonwebtoken@9.0.2:
dependencies:
- array-includes: 3.1.8
- array.prototype.flat: 1.3.3
- object.assign: 4.1.7
- object.values: 1.2.1
+ jws: 3.2.2
+ lodash.includes: 4.3.0
+ lodash.isboolean: 3.0.3
+ lodash.isinteger: 4.0.4
+ lodash.isnumber: 3.0.3
+ lodash.isplainobject: 4.0.6
+ lodash.isstring: 4.0.1
+ lodash.once: 4.1.1
+ ms: 2.1.3
+ semver: 7.7.1
+
+ jwa@1.4.1:
+ dependencies:
+ buffer-equal-constant-time: 1.0.1
+ ecdsa-sig-formatter: 1.0.11
+ safe-buffer: 5.2.1
+
+ jwa@2.0.0:
+ dependencies:
+ buffer-equal-constant-time: 1.0.1
+ ecdsa-sig-formatter: 1.0.11
+ safe-buffer: 5.2.1
+
+ jws@3.2.2:
+ dependencies:
+ jwa: 1.4.1
+ safe-buffer: 5.2.1
+
+ jws@4.0.0:
+ dependencies:
+ jwa: 2.0.0
+ safe-buffer: 5.2.1
keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
+ keyv@5.3.2:
+ dependencies:
+ '@keyv/serialize': 1.0.3
+
+ kind-of@6.0.3: {}
+
+ kleur@3.0.3: {}
+
+ leven@3.1.0: {}
+
levn@0.4.1:
dependencies:
prelude-ls: 1.2.1
type-check: 0.4.0
+ light-my-request@6.6.0:
+ dependencies:
+ cookie: 1.0.2
+ process-warning: 4.0.1
+ set-cookie-parser: 2.7.1
+
+ lines-and-columns@1.2.4: {}
+
+ loader-runner@4.3.0: {}
+
+ locate-path@5.0.0:
+ dependencies:
+ p-locate: 4.1.0
+
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
- lodash.get@4.4.2: {}
+ lodash.includes@4.3.0: {}
+
+ lodash.isboolean@3.0.3: {}
+
+ lodash.isinteger@4.0.4: {}
+
+ lodash.isnumber@3.0.3: {}
+
+ lodash.isplainobject@4.0.6: {}
+
+ lodash.isstring@4.0.1: {}
+
+ lodash.memoize@4.1.2: {}
lodash.merge@4.6.2: {}
- lodash@4.17.21: {}
+ lodash.once@4.1.1: {}
- log-symbols@3.0.0:
- dependencies:
- chalk: 2.4.2
+ lodash@4.17.21: {}
log-symbols@4.1.0:
dependencies:
chalk: 4.1.2
is-unicode-supported: 0.1.0
- loose-envify@1.4.0:
+ lowercase-keys@3.0.0: {}
+
+ lru-cache@10.4.3: {}
+
+ lru-cache@11.0.2: {}
+
+ lru-cache@5.1.1:
dependencies:
- js-tokens: 4.0.0
+ yallist: 3.1.1
- lower-case-first@1.0.2:
+ luxon@3.5.0: {}
+
+ magic-string@0.30.17:
dependencies:
- lower-case: 1.1.4
+ '@jridgewell/sourcemap-codec': 1.5.0
- lower-case@1.1.4: {}
+ make-dir@3.1.0:
+ dependencies:
+ semver: 6.3.1
- lru-cache@7.18.3: {}
+ make-dir@4.0.0:
+ dependencies:
+ semver: 7.7.1
make-error@1.3.6: {}
+ makeerror@1.0.12:
+ dependencies:
+ tmpl: 1.0.5
+
math-intrinsics@1.1.0: {}
+ media-typer@0.3.0: {}
+
+ media-typer@1.1.0: {}
+
+ memfs@3.5.3:
+ dependencies:
+ fs-monkey: 1.0.6
+
+ merge-descriptors@2.0.0: {}
+
merge-stream@2.0.0: {}
merge2@1.4.1: {}
+ methods@1.1.2: {}
+
micromatch@4.0.8:
dependencies:
braces: 3.0.3
picomatch: 2.3.1
+ mime-db@1.52.0: {}
+
+ mime-db@1.54.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mime-types@3.0.0:
+ dependencies:
+ mime-db: 1.54.0
+
+ mime@2.6.0: {}
+
+ mime@3.0.0: {}
+
mimic-fn@2.1.0: {}
+ mimic-response@3.1.0: {}
+
+ mimic-response@4.0.0: {}
+
+ minimatch@10.0.1:
+ dependencies:
+ brace-expansion: 2.0.1
+
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.11
+ minimatch@5.1.6:
+ dependencies:
+ brace-expansion: 2.0.1
+
minimatch@9.0.5:
dependencies:
brace-expansion: 2.0.1
minimist@1.2.8: {}
+ minipass@3.3.6:
+ dependencies:
+ yallist: 4.0.0
+
+ minipass@5.0.0: {}
+
+ minipass@7.1.2: {}
+
+ minizlib@2.1.2:
+ dependencies:
+ minipass: 3.3.6
+ yallist: 4.0.0
+
mkdirp@0.5.6:
dependencies:
minimist: 1.2.8
+ mkdirp@1.0.4: {}
+
+ mnemonist@0.40.0:
+ dependencies:
+ obliterator: 2.0.5
+
+ ms@2.0.0: {}
+
+ ms@2.1.2: {}
+
ms@2.1.3: {}
- mute-stream@0.0.8: {}
+ mssql@11.0.1:
+ dependencies:
+ '@tediousjs/connection-string': 0.5.0
+ commander: 11.1.0
+ debug: 4.4.0
+ rfdc: 1.4.1
+ tarn: 3.0.2
+ tedious: 18.6.1
+ transitivePeerDependencies:
+ - supports-color
- nanoid@3.3.8: {}
+ multer@1.4.5-lts.1:
+ dependencies:
+ append-field: 1.0.0
+ busboy: 1.6.0
+ concat-stream: 1.6.2
+ mkdirp: 0.5.6
+ object-assign: 4.1.1
+ type-is: 1.6.18
+ xtend: 4.0.2
+
+ mute-stream@2.0.0: {}
+
+ native-duplexpair@1.0.0: {}
natural-compare@1.4.0: {}
+ negotiator@1.0.0: {}
+
neo-async@2.6.2: {}
- netmask@2.0.2: {}
-
- next@15.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
+ nestjs-cls@5.4.1(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2):
dependencies:
- '@next/env': 15.2.1
- '@swc/counter': 0.1.3
- '@swc/helpers': 0.5.15
- busboy: 1.6.0
- caniuse-lite: 1.0.30001701
- postcss: 8.4.31
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- styled-jsx: 5.1.6(react@19.0.0)
- optionalDependencies:
- '@next/swc-darwin-arm64': 15.2.1
- '@next/swc-darwin-x64': 15.2.1
- '@next/swc-linux-arm64-gnu': 15.2.1
- '@next/swc-linux-arm64-musl': 15.2.1
- '@next/swc-linux-x64-gnu': 15.2.1
- '@next/swc-linux-x64-musl': 15.2.1
- '@next/swc-win32-arm64-msvc': 15.2.1
- '@next/swc-win32-x64-msvc': 15.2.1
- sharp: 0.33.5
- transitivePeerDependencies:
- - '@babel/core'
- - babel-plugin-macros
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ reflect-metadata: 0.2.2
+ rxjs: 7.8.2
- no-case@2.3.2:
+ nestjs-paginate@11.1.1(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/swagger@11.0.7(@fastify/static@8.1.1)(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2))(express@5.0.1)(fastify@5.2.1)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))):
dependencies:
- lower-case: 1.1.4
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/swagger': 11.0.7(@fastify/static@8.1.1)(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.12(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.12)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)
+ express: 5.0.1
+ fastify: 5.2.1
+ lodash: 4.17.21
+ typeorm: 0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
- node-plop@0.26.3:
+ nestjs-pino@4.4.0(@nestjs/common@11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2))(pino-http@10.4.0)(pino@9.6.0)(rxjs@7.8.2):
dependencies:
- '@babel/runtime-corejs3': 7.26.9
- '@types/inquirer': 6.5.0
- change-case: 3.1.0
- del: 5.1.0
- globby: 10.0.2
- handlebars: 4.7.8
- inquirer: 7.3.3
- isbinaryfile: 4.0.10
- lodash.get: 4.4.2
- mkdirp: 0.5.6
- resolve: 1.22.10
+ '@nestjs/common': 11.0.12(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ pino: 9.6.0
+ pino-http: 10.4.0
+ rxjs: 7.8.2
+
+ node-abort-controller@3.1.1: {}
+
+ node-addon-api@5.1.0: {}
+
+ node-addon-api@8.3.1: {}
+
+ node-emoji@1.11.0:
+ dependencies:
+ lodash: 4.17.21
+
+ node-fetch@2.7.0:
+ dependencies:
+ whatwg-url: 5.0.0
+
+ node-gyp-build@4.8.4: {}
+
+ node-int64@0.4.0: {}
+
+ node-releases@2.0.19: {}
+
+ nopt@5.0.0:
+ dependencies:
+ abbrev: 1.1.1
+
+ normalize-path@3.0.0: {}
+
+ normalize-url@8.0.1: {}
npm-run-path@4.0.1:
dependencies:
path-key: 3.1.1
+ npmlog@5.0.1:
+ dependencies:
+ are-we-there-yet: 2.0.0
+ console-control-strings: 1.1.0
+ gauge: 3.0.2
+ set-blocking: 2.0.0
+
object-assign@4.1.1: {}
object-inspect@1.13.4: {}
- object-keys@1.1.1: {}
+ obliterator@2.0.5: {}
- object.assign@4.1.7:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
- has-symbols: 1.1.0
- object-keys: 1.1.1
+ on-exit-leak-free@2.1.2: {}
- object.entries@1.1.8:
+ on-finished@2.4.1:
dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- object.fromentries@2.0.8:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-object-atoms: 1.1.1
-
- object.values@1.2.1:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
+ ee-first: 1.1.1
once@1.4.0:
dependencies:
@@ -3653,6 +9011,17 @@ snapshots:
dependencies:
mimic-fn: 2.1.0
+ open@10.1.0:
+ dependencies:
+ default-browser: 5.2.1
+ define-lazy-prop: 3.0.0
+ is-inside-container: 1.0.0
+ is-wsl: 3.1.0
+
+ openapi3-ts@4.4.0:
+ dependencies:
+ yaml: 2.7.0
+
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -3662,17 +9031,6 @@ snapshots:
type-check: 0.4.0
word-wrap: 1.2.5
- ora@4.1.1:
- dependencies:
- chalk: 3.0.0
- cli-cursor: 3.1.0
- cli-spinners: 2.9.2
- is-interactive: 1.0.0
- log-symbols: 3.0.0
- mute-stream: 0.0.8
- strip-ansi: 6.0.1
- wcwidth: 1.0.1
-
ora@5.4.1:
dependencies:
bl: 4.1.0
@@ -3687,58 +9045,57 @@ snapshots:
os-tmpdir@1.0.2: {}
- own-keys@1.0.1:
+ p-cancelable@3.0.0: {}
+
+ p-limit@2.3.0:
dependencies:
- get-intrinsic: 1.3.0
- object-keys: 1.1.1
- safe-push-apply: 1.0.0
+ p-try: 2.2.0
p-limit@3.1.0:
dependencies:
yocto-queue: 0.1.0
+ p-locate@4.1.0:
+ dependencies:
+ p-limit: 2.3.0
+
p-locate@5.0.0:
dependencies:
p-limit: 3.1.0
- p-map@3.0.0:
- dependencies:
- aggregate-error: 3.1.0
+ p-try@2.2.0: {}
- pac-proxy-agent@7.2.0:
- dependencies:
- '@tootallnate/quickjs-emscripten': 0.23.0
- agent-base: 7.1.3
- debug: 4.4.0
- get-uri: 6.0.4
- http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.6
- pac-resolver: 7.0.1
- socks-proxy-agent: 8.0.5
- transitivePeerDependencies:
- - supports-color
-
- pac-resolver@7.0.1:
- dependencies:
- degenerator: 5.0.1
- netmask: 2.0.2
-
- param-case@2.1.1:
- dependencies:
- no-case: 2.3.2
+ package-json-from-dist@1.0.1: {}
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
- pascal-case@2.0.1:
+ parse-json@5.2.0:
dependencies:
- camel-case: 3.0.0
- upper-case-first: 1.1.2
+ '@babel/code-frame': 7.26.2
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
- path-case@2.1.1:
+ parseurl@1.3.3: {}
+
+ passport-jwt@4.0.1:
dependencies:
- no-case: 2.3.2
+ jsonwebtoken: 9.0.2
+ passport-strategy: 1.0.0
+
+ passport-local@1.0.0:
+ dependencies:
+ passport-strategy: 1.0.0
+
+ passport-strategy@1.0.0: {}
+
+ passport@0.7.0:
+ dependencies:
+ passport-strategy: 1.0.0
+ pause: 0.0.1
+ utils-merge: 1.0.1
path-exists@4.0.0: {}
@@ -3748,66 +9105,171 @@ snapshots:
path-parse@1.0.7: {}
+ path-scurry@1.11.1:
+ dependencies:
+ lru-cache: 10.4.3
+ minipass: 7.1.2
+
+ path-scurry@2.0.0:
+ dependencies:
+ lru-cache: 11.0.2
+ minipass: 7.1.2
+
+ path-to-regexp@8.2.0: {}
+
path-type@4.0.0: {}
- picocolors@1.0.1: {}
+ pause@0.0.1: {}
+
+ peek-readable@5.4.2: {}
+
+ pend@1.2.0: {}
picocolors@1.1.1: {}
picomatch@2.3.1: {}
- possible-typed-array-names@1.1.0: {}
+ picomatch@4.0.2: {}
- postcss@8.4.31:
+ pino-abstract-transport@0.5.0:
dependencies:
- nanoid: 3.3.8
- picocolors: 1.1.1
- source-map-js: 1.2.1
+ duplexify: 4.1.3
+ split2: 4.2.0
+
+ pino-abstract-transport@2.0.0:
+ dependencies:
+ split2: 4.2.0
+
+ pino-http@10.4.0:
+ dependencies:
+ get-caller-file: 2.0.5
+ pino: 9.6.0
+ pino-std-serializers: 7.0.0
+ process-warning: 4.0.1
+
+ pino-pretty@13.0.0:
+ dependencies:
+ colorette: 2.0.20
+ dateformat: 4.6.3
+ fast-copy: 3.0.2
+ fast-safe-stringify: 2.1.1
+ help-me: 5.0.0
+ joycon: 3.1.1
+ minimist: 1.2.8
+ on-exit-leak-free: 2.1.2
+ pino-abstract-transport: 2.0.0
+ pump: 3.0.2
+ secure-json-parse: 2.7.0
+ sonic-boom: 4.2.0
+ strip-json-comments: 3.1.1
+
+ pino-std-serializers@7.0.0: {}
+
+ pino@9.6.0:
+ dependencies:
+ atomic-sleep: 1.0.0
+ fast-redact: 3.5.0
+ on-exit-leak-free: 2.1.2
+ pino-abstract-transport: 2.0.0
+ pino-std-serializers: 7.0.0
+ process-warning: 4.0.1
+ quick-format-unescaped: 4.0.4
+ real-require: 0.2.0
+ safe-stable-stringify: 2.5.0
+ sonic-boom: 4.2.0
+ thread-stream: 3.1.0
+
+ pirates@4.0.6: {}
+
+ piscina@4.9.2:
+ optionalDependencies:
+ '@napi-rs/nice': 1.0.1
+
+ pkg-dir@4.2.0:
+ dependencies:
+ find-up: 4.1.0
+
+ pluralize@8.0.0: {}
prelude-ls@1.2.1: {}
+ prettier-linter-helpers@1.0.0:
+ dependencies:
+ fast-diff: 1.3.0
+
prettier@3.5.3: {}
- prop-types@15.8.1:
+ pretty-format@29.7.0:
dependencies:
- loose-envify: 1.4.0
- object-assign: 4.1.1
- react-is: 16.13.1
+ '@jest/schemas': 29.6.3
+ ansi-styles: 5.2.0
+ react-is: 18.3.1
- proxy-agent@6.5.0:
+ process-nextick-args@2.0.1: {}
+
+ process-warning@4.0.1: {}
+
+ process@0.11.10: {}
+
+ prompts@2.4.2:
dependencies:
- agent-base: 7.1.3
- debug: 4.4.0
- http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.6
- lru-cache: 7.18.3
- pac-proxy-agent: 7.2.0
- proxy-from-env: 1.1.0
- socks-proxy-agent: 8.0.5
- transitivePeerDependencies:
- - supports-color
+ kleur: 3.0.3
+ sisteransi: 1.0.5
+
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
proxy-from-env@1.1.0: {}
+ pump@3.0.2:
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+
punycode@2.3.1: {}
+ pure-rand@6.1.0: {}
+
+ qs@6.13.0:
+ dependencies:
+ side-channel: 1.1.0
+
+ qs@6.14.0:
+ dependencies:
+ side-channel: 1.1.0
+
queue-microtask@1.2.3: {}
- rc@1.2.8:
+ quick-format-unescaped@4.0.4: {}
+
+ quick-lru@5.1.1: {}
+
+ randombytes@2.1.0:
dependencies:
- deep-extend: 0.6.0
- ini: 1.3.8
- minimist: 1.2.8
- strip-json-comments: 2.0.1
+ safe-buffer: 5.2.1
- react-dom@19.0.0(react@19.0.0):
+ range-parser@1.2.1: {}
+
+ raw-body@3.0.0:
dependencies:
- react: 19.0.0
- scheduler: 0.25.0
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.6.3
+ unpipe: 1.0.0
- react-is@16.13.1: {}
+ react-is@18.3.1: {}
- react@19.0.0: {}
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
readable-stream@3.6.2:
dependencies:
@@ -3815,160 +9277,183 @@ snapshots:
string_decoder: 1.3.0
util-deprecate: 1.0.2
- reflect.getprototypeof@1.0.10:
+ readable-stream@4.7.0:
dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- which-builtin-type: 1.2.1
+ abort-controller: 3.0.0
+ buffer: 6.0.3
+ events: 3.3.0
+ process: 0.11.10
+ string_decoder: 1.3.0
- regenerator-runtime@0.14.1: {}
-
- regexp.prototype.flags@1.5.4:
+ readdirp@3.6.0:
dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-errors: 1.3.0
- get-proto: 1.0.1
- gopd: 1.2.0
- set-function-name: 2.0.2
+ picomatch: 2.3.1
- registry-auth-token@3.3.2:
- dependencies:
- rc: 1.2.8
- safe-buffer: 5.2.1
+ readdirp@4.1.2: {}
- registry-url@3.1.0:
+ real-require@0.2.0: {}
+
+ redis@4.7.0:
dependencies:
- rc: 1.2.8
+ '@redis/bloom': 1.2.0(@redis/client@1.6.0)
+ '@redis/client': 1.6.0
+ '@redis/graph': 1.1.1(@redis/client@1.6.0)
+ '@redis/json': 1.0.7(@redis/client@1.6.0)
+ '@redis/search': 1.2.0(@redis/client@1.6.0)
+ '@redis/time-series': 1.1.0(@redis/client@1.6.0)
+
+ reflect-metadata@0.2.2: {}
+
+ repeat-string@1.6.1: {}
+
+ require-directory@2.1.1: {}
+
+ require-from-string@2.0.2: {}
+
+ resolve-alpn@1.2.1: {}
+
+ resolve-cwd@3.0.0:
+ dependencies:
+ resolve-from: 5.0.0
resolve-from@4.0.0: {}
+ resolve-from@5.0.0: {}
+
+ resolve.exports@2.0.3: {}
+
resolve@1.22.10:
dependencies:
is-core-module: 2.16.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- resolve@2.0.0-next.5:
+ responselike@3.0.0:
dependencies:
- is-core-module: 2.16.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
+ lowercase-keys: 3.0.0
restore-cursor@3.1.0:
dependencies:
onetime: 5.1.2
signal-exit: 3.0.7
+ ret@0.5.0: {}
+
reusify@1.1.0: {}
+ rfdc@1.4.1: {}
+
rimraf@3.0.2:
dependencies:
glob: 7.2.3
- run-async@2.4.1: {}
+ router@2.1.0:
+ dependencies:
+ is-promise: 4.0.0
+ parseurl: 1.3.3
+ path-to-regexp: 8.2.0
+
+ run-applescript@7.0.0: {}
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
- rxjs@6.6.7:
+ rxjs@7.8.1:
dependencies:
- tslib: 1.14.1
+ tslib: 2.8.1
rxjs@7.8.2:
dependencies:
tslib: 2.8.1
- safe-array-concat@1.1.3:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
- has-symbols: 1.1.0
- isarray: 2.0.5
+ safe-buffer@5.1.2: {}
safe-buffer@5.2.1: {}
- safe-push-apply@1.0.0:
+ safe-regex2@4.0.1:
dependencies:
- es-errors: 1.3.0
- isarray: 2.0.5
+ ret: 0.5.0
- safe-regex-test@1.1.0:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-regex: 1.2.1
+ safe-stable-stringify@2.5.0: {}
safer-buffer@2.1.2: {}
- scheduler@0.25.0: {}
+ schema-utils@3.3.0:
+ dependencies:
+ '@types/json-schema': 7.0.15
+ ajv: 6.12.6
+ ajv-keywords: 3.5.2(ajv@6.12.6)
+
+ schema-utils@4.3.0:
+ dependencies:
+ '@types/json-schema': 7.0.15
+ ajv: 8.17.1
+ ajv-formats: 2.1.1(ajv@8.17.1)
+ ajv-keywords: 5.1.0(ajv@8.17.1)
+
+ secure-json-parse@2.7.0: {}
+
+ secure-json-parse@3.0.2: {}
+
+ seek-bzip@2.0.0:
+ dependencies:
+ commander: 6.2.1
+
+ semver-regex@4.0.5: {}
+
+ semver-truncate@3.0.0:
+ dependencies:
+ semver: 7.7.1
+
+ semver@5.7.2: {}
semver@6.3.1: {}
- semver@7.6.2: {}
-
semver@7.7.1: {}
- sentence-case@2.1.1:
+ send@1.1.0:
dependencies:
- no-case: 2.3.2
- upper-case-first: 1.1.2
+ debug: 4.4.0
+ destroy: 1.2.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime-types: 2.1.35
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
- set-function-length@1.2.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.3.0
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
+ seq-logging@1.1.2: {}
- set-function-name@2.0.2:
+ serialize-javascript@6.0.2:
dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- functions-have-names: 1.2.3
- has-property-descriptors: 1.0.2
+ randombytes: 2.1.0
- set-proto@1.0.0:
+ serve-static@2.1.0:
dependencies:
- dunder-proto: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 1.1.0
+ transitivePeerDependencies:
+ - supports-color
- sharp@0.33.5:
+ set-blocking@2.0.0: {}
+
+ set-cookie-parser@2.7.1: {}
+
+ setprototypeof@1.2.0: {}
+
+ sha.js@2.4.11:
dependencies:
- color: 4.2.3
- detect-libc: 2.0.3
- semver: 7.7.1
- optionalDependencies:
- '@img/sharp-darwin-arm64': 0.33.5
- '@img/sharp-darwin-x64': 0.33.5
- '@img/sharp-libvips-darwin-arm64': 1.0.4
- '@img/sharp-libvips-darwin-x64': 1.0.4
- '@img/sharp-libvips-linux-arm': 1.0.5
- '@img/sharp-libvips-linux-arm64': 1.0.4
- '@img/sharp-libvips-linux-s390x': 1.0.4
- '@img/sharp-libvips-linux-x64': 1.0.4
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
- '@img/sharp-libvips-linuxmusl-x64': 1.0.4
- '@img/sharp-linux-arm': 0.33.5
- '@img/sharp-linux-arm64': 0.33.5
- '@img/sharp-linux-s390x': 0.33.5
- '@img/sharp-linux-x64': 0.33.5
- '@img/sharp-linuxmusl-arm64': 0.33.5
- '@img/sharp-linuxmusl-x64': 0.33.5
- '@img/sharp-wasm32': 0.33.5
- '@img/sharp-win32-ia32': 0.33.5
- '@img/sharp-win32-x64': 0.33.5
- optional: true
+ inherits: 2.0.4
+ safe-buffer: 5.2.1
shebang-command@2.0.0:
dependencies:
@@ -3976,6 +9461,8 @@ snapshots:
shebang-regex@3.0.0: {}
+ shimmer@1.2.1: {}
+
side-channel-list@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -4006,89 +9493,87 @@ snapshots:
signal-exit@3.0.7: {}
- simple-swizzle@0.2.2:
- dependencies:
- is-arrayish: 0.3.2
- optional: true
+ signal-exit@4.1.0: {}
+
+ sisteransi@1.0.5: {}
slash@3.0.0: {}
- smart-buffer@4.2.0: {}
-
- snake-case@2.1.0:
+ sonic-boom@4.2.0:
dependencies:
- no-case: 2.3.2
+ atomic-sleep: 1.0.0
- socks-proxy-agent@8.0.5:
+ sort-keys-length@1.0.1:
dependencies:
- agent-base: 7.1.3
- debug: 4.4.0
- socks: 2.8.4
- transitivePeerDependencies:
- - supports-color
+ sort-keys: 1.1.2
- socks@2.8.4:
+ sort-keys@1.1.2:
dependencies:
- ip-address: 9.0.5
- smart-buffer: 4.2.0
+ is-plain-obj: 1.1.0
- source-map-js@1.2.1: {}
+ source-map-support@0.5.13:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
source-map@0.6.1: {}
+ source-map@0.7.4: {}
+
+ split2@4.2.0: {}
+
+ sprintf-js@1.0.3: {}
+
sprintf-js@1.1.3: {}
+ sql-highlight@6.0.0: {}
+
+ stack-chain@1.3.7: {}
+
+ stack-utils@2.0.6:
+ dependencies:
+ escape-string-regexp: 2.0.0
+
+ statuses@2.0.1: {}
+
+ stoppable@1.1.0: {}
+
+ stream-shift@1.0.3: {}
+
streamsearch@1.1.0: {}
+ streamx@2.22.0:
+ dependencies:
+ fast-fifo: 1.3.2
+ text-decoder: 1.2.3
+ optionalDependencies:
+ bare-events: 2.5.4
+
+ string-length@4.0.2:
+ dependencies:
+ char-regex: 1.0.2
+ strip-ansi: 6.0.1
+
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
- string.prototype.matchall@4.0.12:
+ string-width@5.1.2:
dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- gopd: 1.2.0
- has-symbols: 1.1.0
- internal-slot: 1.1.0
- regexp.prototype.flags: 1.5.4
- set-function-name: 2.0.2
- side-channel: 1.1.0
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
- string.prototype.repeat@1.0.0:
+ string_decoder@1.1.1:
dependencies:
- define-properties: 1.2.1
- es-abstract: 1.23.9
-
- string.prototype.trim@1.2.10:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-data-property: 1.1.4
- define-properties: 1.2.1
- es-abstract: 1.23.9
- es-object-atoms: 1.1.1
- has-property-descriptors: 1.0.2
-
- string.prototype.trimend@1.0.9:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- string.prototype.trimstart@1.0.8:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
+ safe-buffer: 5.1.2
string_decoder@1.3.0:
dependencies:
@@ -4098,59 +9583,201 @@ snapshots:
dependencies:
ansi-regex: 5.0.1
- strip-final-newline@2.0.0: {}
+ strip-ansi@7.1.0:
+ dependencies:
+ ansi-regex: 6.1.0
- strip-json-comments@2.0.1: {}
+ strip-bom@3.0.0: {}
+
+ strip-bom@4.0.0: {}
+
+ strip-dirs@3.0.0:
+ dependencies:
+ inspect-with-kind: 1.0.5
+ is-plain-obj: 1.1.0
+
+ strip-final-newline@2.0.0: {}
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(react@19.0.0):
+ strtok3@9.1.1:
dependencies:
- client-only: 0.0.1
- react: 19.0.0
+ '@tokenizer/token': 0.3.0
+ peek-readable: 5.4.2
- supports-color@5.5.0:
+ superagent@9.0.2:
dependencies:
- has-flag: 3.0.0
+ component-emitter: 1.3.1
+ cookiejar: 2.1.4
+ debug: 4.4.0
+ fast-safe-stringify: 2.1.1
+ form-data: 4.0.2
+ formidable: 3.5.2
+ methods: 1.1.2
+ mime: 2.6.0
+ qs: 6.14.0
+ transitivePeerDependencies:
+ - supports-color
+
+ supertest@7.0.0:
+ dependencies:
+ methods: 1.1.2
+ superagent: 9.0.2
+ transitivePeerDependencies:
+ - supports-color
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
supports-preserve-symlinks-flag@1.0.0: {}
- swap-case@1.1.2:
+ swagger-ui-dist@5.20.1:
dependencies:
- lower-case: 1.1.4
- upper-case: 1.1.3
+ '@scarf/scarf': 1.4.0
+
+ symbol-observable@4.0.0: {}
+
+ synckit@0.9.2:
+ dependencies:
+ '@pkgr/core': 0.1.1
+ tslib: 2.8.1
+
+ tapable@2.2.1: {}
+
+ tar-stream@3.1.7:
+ dependencies:
+ b4a: 1.6.7
+ fast-fifo: 1.3.2
+ streamx: 2.22.0
+
+ tar@6.2.1:
+ dependencies:
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ minipass: 5.0.0
+ minizlib: 2.1.2
+ mkdirp: 1.0.4
+ yallist: 4.0.0
+
+ tarn@3.0.2: {}
+
+ tedious@18.6.1:
+ dependencies:
+ '@azure/core-auth': 1.9.0
+ '@azure/identity': 4.8.0
+ '@azure/keyvault-keys': 4.9.0
+ '@js-joda/core': 5.6.4
+ '@types/node': 22.13.10
+ bl: 6.1.0
+ iconv-lite: 0.6.3
+ js-md4: 0.3.2
+ native-duplexpair: 1.0.0
+ sprintf-js: 1.1.3
+ transitivePeerDependencies:
+ - supports-color
+
+ terser-webpack-plugin@5.3.14(@swc/core@1.11.11)(webpack@5.98.0(@swc/core@1.11.11)):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ jest-worker: 27.5.1
+ schema-utils: 4.3.0
+ serialize-javascript: 6.0.2
+ terser: 5.39.0
+ webpack: 5.98.0(@swc/core@1.11.11)
+ optionalDependencies:
+ '@swc/core': 1.11.11
+
+ terser@5.39.0:
+ dependencies:
+ '@jridgewell/source-map': 0.3.6
+ acorn: 8.14.1
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ test-exclude@6.0.0:
+ dependencies:
+ '@istanbuljs/schema': 0.1.3
+ glob: 7.2.3
+ minimatch: 3.1.2
+
+ text-decoder@1.2.3:
+ dependencies:
+ b4a: 1.6.7
+
+ thread-stream@3.1.0:
+ dependencies:
+ real-require: 0.2.0
through@2.3.8: {}
- tinycolor2@1.6.0: {}
-
- tinygradient@1.1.5:
- dependencies:
- '@types/tinycolor2': 1.4.6
- tinycolor2: 1.6.0
-
- title-case@2.1.1:
- dependencies:
- no-case: 2.3.2
- upper-case: 1.1.3
-
tmp@0.0.33:
dependencies:
os-tmpdir: 1.0.2
+ tmpl@1.0.5: {}
+
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
+ toad-cache@3.7.0: {}
+
+ toidentifier@1.0.1: {}
+
+ token-types@6.0.0:
+ dependencies:
+ '@tokenizer/token': 0.3.0
+ ieee754: 1.2.1
+
+ tozod@3.0.0(zod@3.24.2):
+ dependencies:
+ zod: 3.24.2
+
+ tr46@0.0.3: {}
+
+ tree-kill@1.2.2: {}
+
ts-api-utils@2.0.1(typescript@5.8.2):
dependencies:
typescript: 5.8.2
- ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2):
+ ts-deepmerge@6.2.1: {}
+
+ ts-jest@29.2.6(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)))(typescript@5.8.2):
+ dependencies:
+ bs-logger: 0.2.6
+ ejs: 3.1.10
+ fast-json-stable-stringify: 2.1.0
+ jest: 29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+ jest-util: 29.7.0
+ json5: 2.2.3
+ lodash.memoize: 4.1.2
+ make-error: 1.3.6
+ semver: 7.7.1
+ typescript: 5.8.2
+ yargs-parser: 21.1.1
+ optionalDependencies:
+ '@babel/core': 7.26.10
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ babel-jest: 29.7.0(@babel/core@7.26.10)
+
+ ts-loader@9.5.2(typescript@5.8.2)(webpack@5.98.0(@swc/core@1.11.11)):
+ dependencies:
+ chalk: 4.1.2
+ enhanced-resolve: 5.18.1
+ micromatch: 4.0.8
+ semver: 7.7.1
+ source-map: 0.7.4
+ typescript: 5.8.2
+ webpack: 5.98.0(@swc/core@1.11.11)
+
+ ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
@@ -4158,7 +9785,7 @@ snapshots:
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 22.13.10
- acorn: 8.14.0
+ acorn: 8.14.1
acorn-walk: 8.3.4
arg: 4.1.3
create-require: 1.1.1
@@ -4167,8 +9794,21 @@ snapshots:
typescript: 5.8.2
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
+ optionalDependencies:
+ '@swc/core': 1.11.11
- tslib@1.14.1: {}
+ tsconfig-paths-webpack-plugin@4.2.0:
+ dependencies:
+ chalk: 4.1.2
+ enhanced-resolve: 5.18.1
+ tapable: 2.2.1
+ tsconfig-paths: 4.2.0
+
+ tsconfig-paths@4.2.0:
+ dependencies:
+ json5: 2.2.3
+ minimist: 1.2.8
+ strip-bom: 3.0.0
tslib@2.8.1: {}
@@ -4203,40 +9843,63 @@ snapshots:
dependencies:
prelude-ls: 1.2.1
+ type-detect@4.0.8: {}
+
+ type-fest@0.20.2: {}
+
type-fest@0.21.3: {}
- typed-array-buffer@1.0.3:
+ type-is@1.6.18:
dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-typed-array: 1.1.15
+ media-typer: 0.3.0
+ mime-types: 2.1.35
- typed-array-byte-length@1.0.3:
+ type-is@2.0.0:
dependencies:
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- has-proto: 1.2.0
- is-typed-array: 1.1.15
+ content-type: 1.0.5
+ media-typer: 1.1.0
+ mime-types: 3.0.0
- typed-array-byte-offset@1.0.4:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- has-proto: 1.2.0
- is-typed-array: 1.1.15
- reflect.getprototypeof: 1.0.10
+ typedarray@0.0.6: {}
- typed-array-length@1.0.7:
+ typeorm-naming-strategies@4.1.0(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))):
dependencies:
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- is-typed-array: 1.1.15
- possible-typed-array-names: 1.1.0
- reflect.getprototypeof: 1.0.10
+ typeorm: 0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+
+ typeorm-scoped@1.2.0(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))):
+ dependencies:
+ typeorm: 0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+
+ typeorm-transactional@0.5.0(reflect-metadata@0.2.2)(typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))):
+ dependencies:
+ '@types/cls-hooked': 4.3.9
+ cls-hooked: 4.2.2
+ reflect-metadata: 0.2.2
+ semver: 7.7.1
+ typeorm: 0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2))
+
+ typeorm@0.3.21(mssql@11.0.1)(redis@4.7.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)):
+ dependencies:
+ '@sqltools/formatter': 1.2.5
+ ansis: 3.16.0
+ app-root-path: 3.1.0
+ buffer: 6.0.3
+ dayjs: 1.11.13
+ debug: 4.4.0
+ dotenv: 16.0.3
+ glob: 10.4.5
+ reflect-metadata: 0.2.2
+ sha.js: 2.4.11
+ sql-highlight: 6.0.0
+ tslib: 2.8.1
+ uuid: 11.1.0
+ yargs: 17.7.2
+ optionalDependencies:
+ mssql: 11.0.1
+ redis: 4.7.0
+ ts-node: 10.9.2(@swc/core@1.11.11)(@types/node@22.13.10)(typescript@5.8.2)
+ transitivePeerDependencies:
+ - supports-color
typescript-eslint@8.26.0(eslint@9.22.0)(typescript@5.8.2):
dependencies:
@@ -4248,32 +9911,32 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ typescript@5.7.3: {}
+
typescript@5.8.2: {}
- uglify-js@3.19.3:
- optional: true
-
- unbox-primitive@1.1.0:
+ uid@2.0.2:
dependencies:
- call-bound: 1.0.4
- has-bigints: 1.1.0
- has-symbols: 1.1.0
- which-boxed-primitive: 1.1.1
+ '@lukeed/csprng': 1.1.0
+
+ uint8array-extras@1.4.0: {}
+
+ unbzip2-stream@1.4.3:
+ dependencies:
+ buffer: 5.7.1
+ through: 2.3.8
undici-types@6.20.0: {}
universalify@2.0.1: {}
- update-check@1.5.4:
- dependencies:
- registry-auth-token: 3.3.2
- registry-url: 3.1.0
+ unpipe@1.0.0: {}
- upper-case-first@1.1.2:
+ update-browserslist-db@1.1.3(browserslist@4.24.4):
dependencies:
- upper-case: 1.1.3
-
- upper-case@1.1.3: {}
+ browserslist: 4.24.4
+ escalade: 3.2.0
+ picocolors: 1.1.1
uri-js@4.4.1:
dependencies:
@@ -4281,61 +9944,89 @@ snapshots:
util-deprecate@1.0.2: {}
+ utils-merge@1.0.1: {}
+
+ uuid@11.1.0: {}
+
+ uuid@8.3.2: {}
+
v8-compile-cache-lib@3.0.1: {}
- validate-npm-package-name@5.0.1: {}
+ v8-to-istanbul@9.3.0:
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ '@types/istanbul-lib-coverage': 2.0.6
+ convert-source-map: 2.0.0
+
+ vary@1.1.2: {}
+
+ walker@1.0.8:
+ dependencies:
+ makeerror: 1.0.12
+
+ watchpack@2.4.2:
+ dependencies:
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
wcwidth@1.0.1:
dependencies:
defaults: 1.0.4
- which-boxed-primitive@1.1.1:
- dependencies:
- is-bigint: 1.1.0
- is-boolean-object: 1.2.2
- is-number-object: 1.1.1
- is-string: 1.1.1
- is-symbol: 1.1.1
+ webidl-conversions@3.0.1: {}
- which-builtin-type@1.2.1:
- dependencies:
- call-bound: 1.0.4
- function.prototype.name: 1.1.8
- has-tostringtag: 1.0.2
- is-async-function: 2.1.1
- is-date-object: 1.1.0
- is-finalizationregistry: 1.1.1
- is-generator-function: 1.1.0
- is-regex: 1.2.1
- is-weakref: 1.1.1
- isarray: 2.0.5
- which-boxed-primitive: 1.1.1
- which-collection: 1.0.2
- which-typed-array: 1.1.18
+ webpack-node-externals@3.0.0: {}
- which-collection@1.0.2:
- dependencies:
- is-map: 2.0.3
- is-set: 2.0.3
- is-weakmap: 2.0.2
- is-weakset: 2.0.4
+ webpack-sources@3.2.3: {}
- which-typed-array@1.1.18:
+ webpack@5.98.0(@swc/core@1.11.11):
dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- call-bound: 1.0.4
- for-each: 0.3.5
- gopd: 1.2.0
- has-tostringtag: 1.0.2
+ '@types/eslint-scope': 3.7.7
+ '@types/estree': 1.0.6
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/wasm-edit': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+ acorn: 8.14.1
+ browserslist: 4.24.4
+ chrome-trace-event: 1.0.4
+ enhanced-resolve: 5.18.1
+ es-module-lexer: 1.6.0
+ eslint-scope: 5.1.1
+ events: 3.3.0
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+ json-parse-even-better-errors: 2.3.1
+ loader-runner: 4.3.0
+ mime-types: 2.1.35
+ neo-async: 2.6.2
+ schema-utils: 4.3.0
+ tapable: 2.2.1
+ terser-webpack-plugin: 5.3.14(@swc/core@1.11.11)(webpack@5.98.0(@swc/core@1.11.11))
+ watchpack: 2.4.2
+ webpack-sources: 3.2.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - esbuild
+ - uglify-js
+
+ whatwg-url@5.0.0:
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
which@2.0.2:
dependencies:
isexe: 2.0.0
- word-wrap@1.2.5: {}
+ wide-align@1.1.5:
+ dependencies:
+ string-width: 4.2.3
- wordwrap@1.0.0: {}
+ widest-line@3.1.0:
+ dependencies:
+ string-width: 4.2.3
+
+ word-wrap@1.2.5: {}
wrap-ansi@6.2.0:
dependencies:
@@ -4343,8 +10034,56 @@ snapshots:
string-width: 4.2.3
strip-ansi: 6.0.1
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
wrappy@1.0.2: {}
+ write-file-atomic@4.0.2:
+ dependencies:
+ imurmurhash: 0.1.4
+ signal-exit: 3.0.7
+
+ xtend@4.0.2: {}
+
+ y18n@5.0.8: {}
+
+ yallist@3.1.1: {}
+
+ yallist@4.0.0: {}
+
+ yaml@2.7.0: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs@17.7.2:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
+ yauzl@3.2.0:
+ dependencies:
+ buffer-crc32: 0.2.13
+ pend: 1.2.0
+
yn@3.1.1: {}
yocto-queue@0.1.0: {}
+
+ yoctocolors-cjs@2.1.2: {}
+
+ zod@3.24.2: {}
diff --git a/turbo.json b/turbo.json
index d6a7fe0..1a53797 100644
--- a/turbo.json
+++ b/turbo.json
@@ -5,7 +5,7 @@
"build": {
"dependsOn": ["^build"],
"inputs": ["$TURBO_DEFAULT$", ".env*"],
- "outputs": [".next/**", "!.next/cache/**"]
+ "outputs": ["dist/**"]
},
"lint": {
"dependsOn": ["^lint"]